pycharm手写数字识别knn
时间: 2025-05-18 12:02:50 浏览: 26
### 使用 PyCharm 实现基于 KNN 的手写数字识别
以下是通过 Python 和 Scikit-learn 库,在 PyCharm 中实现基于 KNN 算法的手写数字识别的具体方法:
#### 1. 安装必要的库
在使用 KNN 算法之前,需要安装 `scikit-learn` 和其他依赖项。可以通过以下命令完成安装:
```bash
pip install scikit-learn numpy matplotlib
```
#### 2. 加载 MNIST 数据集
MNIST 是常用的手写数字数据集,可以直接从 Scikit-learn 提供的数据集中加载。
#### 3. 创建 KNN 分类器
根据引用内容[^2]和[^3],可以设置 K 值并初始化 KNN 分类器。
#### 4. 训练与评估模型
训练模型并对测试集进行预测,最后打印出模型的准确性。
下面是完整的代码示例:
```python
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
# 加载手写数字数据集 (MNIST-like dataset)
digits = load_digits()
# 将数据分为特征 X 和标签 y
X, y = digits.data, digits.target
# 划分训练集和测试集
train_X, test_X, train_Y, test_Y = train_test_split(X, y, test_size=0.2, random_state=42)
# 设置 K 值并创建 KNN 分类器
k_value = 3 # 可以调整此参数来优化性能
knn_classifier = KNeighborsClassifier(n_neighbors=k_value)
# 训练分类器
knn_classifier.fit(train_X, train_Y)
# 预测测试集的结果
predictions = knn_classifier.predict(test_X)
# 输出模型评分
print(f"KNN 训练集得分: {knn_classifier.score(train_X, train_Y):.4f}") # 打印训练集上的表现
print(f"KNN 测试集得分: {knn_classifier.score(test_X, test_Y):.4f}") # 打印测试集上的表现
# 显示部分预测结果及其真实值
for i in range(5):
print(f"实际值: {test_Y[i]}, 预测值: {predictions[i]}")
```
上述代码实现了以下几个功能:
- **加载数据**:使用 `load_digits()` 函数获取内置的手写数字数据集。
- **划分数据集**:将数据划分为训练集和测试集,其中测试集占总数据量的 20%。
- **构建分类器**:定义了一个具有指定邻居数(即 K 值)的 KNN 分类器。
- **训练与验证**:分别计算了训练集和测试集上模型的表现,并展示了部分预测结果。
关于 K 值的选择,需注意其对模型性能的影响。较小的 K 值可能导致过拟合,而较大的 K 值可能引起欠拟合[^4]。
---
阅读全文
相关推荐


















