机器学习经典算法——KNN算法R语言实现

本文介绍了作者在学习《machine learning in action》时,使用R语言重新实现KNN算法的过程,作为学习系列的第一篇,分享了具体的R代码,以备后续查阅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习《machine learning in action》,书上提供的算法实现是python实现。由于自己用python写代码比较少,故用R对算法进行了重新实现。记录于此,供自己以后参考。

作为学习《machine learning in action》算法的第一篇,这里先贴出KNN算法的R实现。

#计算距离函数。
#type = c("O", "I", "F", "M", "2")
distance<-function(train_data,obse,type)
{
	r<-nrow(train_data)
	near_distance<-matrix(nrow=r,ncol=1)
	for(i in 1:r){
		near_distance[i]<-norm(cbind(train_data[i,]-obse),type)		
	}
	return (near_distance)
}

#计算与所有的训练集之间的距离关系
knn<-function(train_data,obse,type,calcols,classcol,idcol)
{
	d<-distance(train_data[,calcols],obse,type)
	return (data.frame(train_data[,idcol],train_data[,classcol],d))
}
#用knn来预测点属于的类别
#train_data  训练集matrix格式
#obse	     要预测对象
#type        计算距离采用的范数类型
#calcols     那些列参与计算距离
#classcol    类别标志类
#idcol       唯一标识每个训练对象的列
#k           k邻近里面的k值
knn_classi<-function(train_data,obse,type,calcols,classcol,idcol,k)
{
		all_near<-knn(train_data,obse,type,calcols,classcol,idcol)
		all_near<-al
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值