KNN 可以说是最简单的分类算法之一
同时,它也是最常用的分类算法之一。
注意:KNN 算法是有监督学习中的分类算法,它看起来和另一个机器学习算法 K-means 有点像(K-means 是无监督学习算法),但却是有本质区别的。
python 安装包+资料:点击此处跳转文末名片获取
Scikit-learn(以前称为scikits.learn,也称为sklearn)
是针对Python 编程语言的免费软件机器学习库 。
它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN,并且旨在与Python数值科学库NumPy和SciPy联合使用。
matplotlib
是一个 Python 的 2D绘图库
它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
加载数据
digits = load_digits()
data = digits.data
数据探索
data里面每个元素代表一张图片
print(data[0])
print(digits.images[0])
print(digits.target[0])
plt.imshow(digits.images[0])
plt.show()
分割数据
将25%的数据作为测试集,
其余作为训练集(你也可以指定其他比例的数据作为训练集)
train_x, test_x, train_y, test_y = train_test_split(data, digits.target, test_size=0.25, random_state=33)
print(train_x)
创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(train_x, train_y)
print("KNN训练集得分: %.4lf" % knn.score(train_x, train_y))
print("KNN测试集得分: %.4lf" % knn.score(test_x, test_y))
测试分类效果
print(knn.predict(data))