赞
踩
KNN 算法,或者称 k最邻近算法,是 有监督学习中的分类算法 。它可以用于分类或回归问题,但它通常用作分类算法。
1.计算未知样本到每一个训练样本的距离
2.将训练样本根据距离大小升序排列
3.取出距离最近的 K 个训练样本
4.进行多数表决,统计 K 个样本中哪个类别的样本个数最多
5.将未知的样本归属到出现次数最多的类别
1.计算未知样本到每一个训练样本的距离
2.将训练样本根据距离大小升序排列
3.取出距离最近的 K 个训练样本
4.把这个 K 个样本的目标值计算其平均值
5.作为将未知的样本预测的值
K值过小,过拟合(模型更易受到异常点影响)
K值过大,欠拟合
在scikit-learn
中,可以使用KNeighborsClassifier
类来实现KNN分类。以下是一个简单的示例:
- # 导包
- from sklearn.neighbors import KNeighborsClassifier
-
- # 导数据
- x = [[0, 1, 3], [1, 3, 2], [2, 4, 5], [3, 6, 4]]
- y = [0, 0, 1, 1]
-
- # 实例化对象
- model = KNeighborsClassifier(n_neighbors=3) #参数n_neighbors指定了在预测时使用的邻居数量
-
- # 训练(-->评估)
- model.fit(x, y) #fit计算每个数据点之间的距离
-
- # 预测
- myret = model.predict([[4, 3, 7]])
-
- print(f'预测值:{myret}')
对于回归问题,scikit-learn
提供了KNeighborsRegressor
类。以下是一个简单的示例:
- # 导包
- from sklearn.neighbors import KNeighborsRegressor
- # 导数据
- x = [[1, 2, 3], [2, 4, 5], [2, 3, 6], [4, 5, 1]]
- y = [0.1, 0.2, 0.3, 0.4]
- # 实例化对象
- model = KNeighborsRegressor(n_neighbors=3)
- # 训练
- model.fit(x, y)
- # 评估
- mypre = model.predict([[2, 6, 3]])
- print(f"预测值:{mypre}")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。