用c语言实现K-NN算法,K-NN算法

什么叫做K-Nearest Neighbours?

K临近算法是一个简单的分类算法,它也可以用来做回归。

K-NN是一个非参数算法,不需要做出任何假设,他是通过基础实例(意味着我们的算法没有明确地学习模型。相反,它选择记住训练实例。)并用于监督学习设置。

K-NN也被叫做基于实例的惰性算法。

K-NN算法是如何工作的?

K-NN在用于分类数据时,输出的类的类型是在已有的类型。

这个方法有三个关键的元素。一个是标签对象,例如:一个是对象之间的距离,一组存储的记录,还有就是最邻近的点的个数K的值。

做预测

当模型已经准备好了,就需要对没有分类标签的对象进行分类。首先计算未分类对象与其他实例分类对象之间的距离矩阵,一般使用欧式距离。选取K个距离预测对象最短的距离的训练数据,依靠它们的分类标签对预测对象进行分类。

距离

欧式距离是我们使用最多的距离。可以参考两点之间的距离公式。

另外还有一些其他的距离

马氏距离,名氏距离,绝对值距离

选取K的值

算法非常简单,但是K值的选取不容易,一个较小的K会使结果受到较大的噪声影响。一个较大的K值会造成计算花费时间。K值的选取和个人的经验有关,可以多次尝试不同的K值。

算法实现

KNN算法十分简单,自己用语言写也不复杂,这里还是使用sklearn包的封装。from sklearn.neighbors import KNeighborsClassifier#导入封装包

#除了分类模型外,还可以做回归模型,在上面引入即可。

import numpy as np

knn = KNeighborsClassifier(n_neighbors=3)#初始化KNN算法分类模型

X = np.array([[0.1,0.1],[0,0],[1,0.9]])

y = ['B','B','A']#分类标签

knn.fit(X,y)#模型训练

print(knn.predict([[1,0.2]]))#模型预测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值