R语言实现KNN 算法

本文介绍了如何利用R语言实现K近邻(KNN)算法,这是一种常见的机器学习分类方法。通过计算测试样本与训练样本之间的欧式距离,选择最近的K个样本,并根据这些样本的类别进行投票,从而决定测试样本的归属类别。文中以R语言自带的iris数据集为例进行了演示。
摘要由CSDN通过智能技术生成

KNN是机器学习中最简单的分类算法之一

就是把每一个测试样本跟训练样本中的每一个样本求他们的欧式距离,然后选出最小的几个,里面哪一个类多 这个测试样本就属于哪一个类


用R语言自带的iris 写了一下

data("iris")
length(iris[,1])
idx = sample(150,100)
train = iris[idx,]
test = iris[-idx,]
trainLabel = train[,"Species"]
testLabel = test[,"Species"]
trainData = train[,c(1:4)]
testData = test[,c(1:4)]
trainData = as.matrix(trainData)
testData = as.matrix(testData)
#testData[1,]
label = c(1:100)
falseaccury  = 0;
for ( i in 1:length(testData[,1]) ){
  countVi = 0;
  countVe = 0;
  countSe = 0;
  s = matrix(rep(testData[i,],length(trainData[,1])),nrow = length(trainData[,1]),byrow = TRUE)
  Diffmatrix = s - trainData
  t = apply(Diffmatrix^2,1,sum)
  st = data.frame(t,1:length(t))
  colnames(st) =c("dist","or")
  orderst = st[order(st$dist),]
  for(j in 1:1){
    temp
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值