写一个手写数字识别的python代码,使用SK-Learn 自带玩具数据集训练贝叶斯分类器,预处理后导入自己手写的数字图片
时间: 2024-03-22 10:37:47 浏览: 152
好的,以下是代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from PIL import Image
# 加载手写数字数据集
digits = load_digits()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.3, random_state=42)
# 使用高斯朴素贝叶斯分类器进行训练
gnb = GaussianNB()
gnb.fit(X_train, y_train)
# 对测试集进行预测
y_pred = gnb.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# 预处理手写数字图片并进行预测
image = Image.open("digit.jpg").convert("L")
image = image.resize((8, 8))
image = np.array(image)
image = image.reshape((64,))
prediction = gnb.predict([image])
print("Prediction:", prediction[0])
# 显示手写数字图片
plt.imshow(image.reshape((8,8)), cmap="gray")
plt.show()
```
这个代码使用SK-Learn自带的玩具数据集加载手写数字数据集,将数据集分为训练集和测试集并使用高斯朴素贝叶斯分类器进行训练。然后,代码加载一个手写数字图片,对其进行预处理并进行预测。最后,代码显示手写数字图片并输出预测结果。注意,这个代码是基于8x8像素的手写数字图片进行训练和预测的。如果你要使用不同大小的图片,需要进行相应的修改。
阅读全文