knn算法及R语言实现(1)

算法要点:

knn(k-nearst neighbor)

1:k:=最近邻点数,D:=training set of data

2:for (待测点z)

3:计算z和每个样例(x,y)的距离

4:选择离z最近的k个训练样例的集合

5:统计第4步得到的点哪一类多,则z就属于哪一类

6:end for

数据:

libraryI(ISLR)

names(Smarket )#R自带数据

knn代码:

attach(Smarket)

train=(Year<2005)                                                   #分离出2005之前的数据

train.X=cbind(Lag1,Lag2)[train,]                           #把2005年之前的数据中Lag1,Lag2组成矩阵,作为训练数据

test.X=cbind(Lag1,Lag2)[!train,]                           #把2005年之后的数据中Lag1,Lag2组成矩阵,作为测试数据

train.Direction=Direction[train]                              #训练数据的类标号

Direction.2005=Direction[!train]

set.seed(1)                                                               #set.seed(k)结果可以重现k次

knn.pred=knn(train.X,test.X,train.Direction,k=3)

table(knn.pred,Direction.2005)                            #confusion matrix

mean(knn.pred==Direction.2005)                       #accurate rate

实验结果

        Direction.2005
knn.pred Down Up
    Down   48 55
    Up     63 86
> mean(knn.pred==Direction.2005)
[1] 0.531746
算法分析:

优点:(i)基于实例的学习,不需要建立模型,不必维护源自数据的抽象(模型);(ii)可以生成任意形状的决策边界,而决策树和基于规则的分类器只局限于直线决策边界(高维时是超平面)

缺点:(i)分类测试样例时,开销很大,为O(n),n为training set个数;(ii)基于局部信息进行预测,所以当k比较小时,对噪声数据很敏感,而模型分类算法是基于整体的。


意点:(i)选择什么样的临近度度量和数据处理很重要,如(身高,体重)来对人分类,身高的可变性可能很小(0.2-2.5m),而体重的可变范围比较大
(5-150kg),如果不考虑属性单位,那么临近度就可能只被体重左右。(ii)k太小,则z身边的第一个点就决定了z的类,由于没有充分参考
training set的信息,所以是underfitting 的,如果k太大,一个极端的例子就是k>n,则所有的点都属于多数一类。

时间: 2024-11-07 08:04:59

knn算法及R语言实现(1)的相关文章

Bagging算法的R语言实现

bagging 是bootstrap aggregating的缩写,是第一批用于多分类集成算法. bagging算法如下: 循环K次,每次都从样本集D中有放回地抽取样本集Di,这样总共得到k个样本集,用这K个样本集进行决策树生成,获得K个决策树模型,再将要检测的数据用这K个决策树模型进行多数表决,获得票数多的结论. 这种思想跟现代民主投票制度如出一辙,一个人再厉害,判断力也是有限的,但是把一群人聚合在一起投票,那单个人所犯错误的概率就会被抵消,最后得出结论的正确性会明显优于单个人做出决策. 个人

机器学习算法的R语言实现(二):决策树

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

机器学习算法的R语言实现(二):决策树算法

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

几种经典排序算法的R语言描述

1.数据准备 # 测试数组 vector = c(5,34,65,36,67,3,6,43,69,59,25,785,10,11,14) vector ## [1] 5 34 65 36 67 3 6 43 69 59 25 785 10 11 14 2.R语言内置排序函数 在R中和排序相关的函数主要有三个:sort(),rank(),order(). sort(x)是对向量x进行排序,返回值排序后的数值向量; rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”; order()

机器学习 视频教程 数据挖掘 实战 开发 应用 算法 案例 R语言

视频资料都逐个核对,清晰高质量,而且包含各种文档.软件安装包和源码!永久免费更新! 技术团队永久免费解答各种技术问题:Hadoop.Redis.Memcached.MongoDB.Spark.Storm.云计算.R语言.机器学习.Nginx.Linux.MySQL.Java EE..NET.PHP,节省您的时间! 获取视频资料和技术支持地址 ------------------------------------------------------------------------------

R语言 神经网络算法

人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统.现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式. 人工神经网络从以下四个方面去模拟人的智能行为: 物理结构:人工神经元将模拟生物神经元的功能 计算模拟:人脑的神经元有局部计算和存储的功能,通过连接构成一个系统.人工神经网络中也有大量

机器学习-K-means聚类及算法实现(基于R语言)

K-means聚类 将n个观测点,按一定标准(数据点的相似度),划归到k个聚类(用户划分.产品类别划分等)中. 重要概念:质心 K-means聚类要求的变量是数值变量,方便计算距离. 算法实现 R语言实现 k-means算法是将数值转换为距离,然后测量距离远近进行聚类的.不归一化的会使得距离非常远. 补充:scale归一化处理的意义 两个变量之间数值差别太大,比如年龄与收入的数值差别就很大. 步骤 第一步,确定聚类数量,即k的值 方法:肘部法则+实际业务需求 第二步,运行K-means模型 第三

R语言数据挖掘实战系列(5)

R语言数据挖掘实战系列(5)--挖掘建模 一.分类与预测 分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值. 1.实现过程 (1)分类 分类是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别.分类模型建立在已有类标记的数据集上,模型在已有样本上的准确率可以方便地计算,所以分类属于有监督的学习. (2)预测 预测是建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制.

R语言中的并行计算——搭建R的集群

转载:http://blog.sina.com.cn/s/blog_83bb57b70101qeys.html 一直纠结于R的大数据计算问题,希望可以找到一个彻底的方案解决它.而云服务器当然是解决这个问题的最佳方案,所以,至少从这方面入手. R的云服务器部署有两种解决方案,一种是使用R语言的并行计算,另外一种是使用RHadoop框架. RHadoop框架其实就是M / R 算法的R语言实现,需要使用者有M / R的计算基础,和R语言平常使用的计算方式有很大的不同,因此,我采用的解决方案是搭建R