python写一段手写数字识别的代码
时间: 2023-09-26 17:09:31 浏览: 44
下面是一个简单的手写数字识别代码,使用的是Python的机器学习库Scikit-learn和数据可视化库Matplotlib:
```python
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
# 加载手写数字数据集
digits = load_digits()
# 可视化一些手写数字图片
fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(6, 6))
for ax, image, label in zip(axes.flat, digits.images, digits.target):
ax.set_axis_off()
ax.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
ax.set_title('Label: %i' % label)
# 将手写数字图片转换成一维数组
X = digits.images.reshape((len(digits.images), -1))
y = digits.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 训练逻辑回归模型
clf = LogisticRegression(C=1e5, max_iter=5000, solver='lbfgs', multi_class='multinomial')
clf.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = clf.predict(X_test)
# 计算混淆矩阵并可视化
cm = confusion_matrix(y_test, y_pred)
plt.matshow(cm, cmap=plt.cm.Blues)
plt.colorbar()
plt.xlabel('Predicted')
plt.ylabel('True')
plt.xticks(range(10))
plt.yticks(range(10))
plt.show()
```
这段代码加载了Scikit-learn自带的手写数字数据集,将手写数字图片转换成一维数组,并使用逻辑回归模型进行分类。最后,它计算了混淆矩阵并将其可视化,以评估模型的性能。