KNN机器算法入门【Python】:实现手写数字识别
人生苦短,我用python
KNN 可以说是最简单的分类算法之一
同时,它也是最常用的分类算法之一。
注意:KNN 算法是有监督学习中的分类算法,它看起来和另一个机器学习算法 K-means 有点像(K-means 是无监督学习算法),但却是有本质区别的。
python 安装包+资料:点击此处跳转文末名片获取
环境使用:
- Python 3.8 <建议最好是和一样版本>
- Pycharm
第三方模块使用:
-
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))