标签:round 获取 模型 中间 学习 位置 表示 绿色 归类
K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类。这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法。其中的K表示最接近自己的K个数据样本。KNN算法和K-Means算法不同的是,K-Means算法用来聚类,用来判断哪些东西是一个比较相近的类型,而KNN算法是用来做归类的,也就是说,有一个样本空间里的样本分成几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类。
目录:
算法概述
从上图中,你还能看到:如果K=3,绿色圆点的最近的3个邻居是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。
工作原理
K值的选择
归一化处理
R示例
#---------------------R:KNN算法-------------------------------- head(iris) a<-iris[-5] #将标记种类的列去掉 head(a) a<-scale(a) #z-score标准化 str(a) head(a) train<-a[c(1:25,50:75,100:125),] #训练集 head(train) test<-a[c(26:49,76:99,126:150),] #测试集 #接下来需要把训练集和测试集的种类标记保存下来 train_lab <-iris[c(1:25,50:75,100:125),5] test_lab <-iris[c(26:49,76:99,126:150),5] #KNN分类例子中在R中使用到的包有“class包”,“gmodels包” #install.packages("class") library(class) #接下来就可以调用knn函数进行模型的建立了 ## 数据框,K个近邻投票,欧氏距离 pre_result<-knn(train=train,test=test,cl=train_lab,k=13) table(pre_result,test_lab) #---------------------R:KKNN 包-------------------------------- #install.packages("kknn") library(kknn) data("iris") dim(iris) m <-(dim(iris))[1] ind <- sample(2, m, replace=TRUE, prob=c(0.7, 0.3)) iris.train <- iris[ind==1,] iris.test <- iris[ind==2,] #调用kknn 之前首先定义公式 #myformula :Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width iris.kknn<-kknn(Species~.,iris.train,iris.test,distance=1,kernel="triangular") summary(iris.kknn) # 获取fitted.values fit <- fitted(iris.kknn) # 建立表格检验判类准确性 table(fit,iris.test$Species) # 绘画散点图,k-nearest neighbor用红色高亮显示 pcol <- as.character(as.numeric(iris.test$Species)) pairs(iris.test[1:4], pch = pcol, col = c("green3", "red")[(iris.test$Species != fit)+1])
推测车型代码
setwd("E:\\RML") cars <- read.csv("bus01.csv",header=TRUE,stringsAsFactors=TRUE) # library(kknn) m <-(dim(cars))[1] ind <- sample(2, m, replace=TRUE, prob=c(0.7, 0.3)) car.train <- cars[ind==1,] car.test <- cars[ind==2,] #调用kknn 之前首先定义公式 myformula <- Type ~ V + A + SOC + MinV + MaxV + MaxT + MinT car.kknn<-kknn(myformula,car.train,car.test,distance=1,kernel="triangular") # 获取car.values fit <- fitted(car.kknn) # 建立表格检验判类准确性 table(fit,car.test$Type,dnn = c("predict","actual")) # 绘画散点图,k-nearest neighbor用红色高亮显示 pcol <- as.character(as.numeric(car.test$Type)) pairs(car.test[-8], pch = pcol, col = c("green3", "red")[(car.test$Type != fit)+1])
标签:round 获取 模型 中间 学习 位置 表示 绿色 归类
原文地址:http://www.cnblogs.com/tgzhu/p/6699365.html