引言:本文是数据挖掘中的一些常用算法介绍。
目录
knn算法
K近邻(K-Nearest Neighbor, KNN)是一种最经典和最简单的有监督学习方法之一。K-近邻算法是最简单的分类器,没有显式的学习过程或训练过程,是懒惰学习(Lazy Learning)。当对数据的分布只有很少或者没有任何先验知识时,K 近邻算法是一个不错的选择。
思想和步骤:先选择一个合适的K,再计算未知样本到已知训练样本的距离,然后按照少数服从多数原则,选择最近距离的K个训练样本中个数最多属于同一个类别,此时该未知样本就属于那一类。
就用R中最常用的数据集iris来举例吧
首先选择合适的K
rm=(list=ls()) # 清除变量
library(class) #导入KNN算法的包 可以用install.packages(“class”)下载包
n=12 #先规定K的最大范围
#利用十折交叉验证
N = nrow(iris)
k_acc = c()
for(k in 1:n){
allACC = c()
for(c in 1:10){
test.idx = seq(c,N,by = 10)
train.idx = setdiff(1:N,test.idx)
test.data = iris[test.idx,]
train.data = iris[train.idx,]
p = knn(train = train.data[,1:4],test = test.data[,1:4],cl = train.data[,5],k = k)
tl = table(truth = test.data[,5],predict = p)
acc = sum(diag(tl))/sum(tl)
allACC =append(allACC,acc)
}
k_acc = rbind(k_acc,mean(allACC))
}
k_final = which.max(k_acc)
计算得到K=7精度最高
利用得到的K进行预测