使用朴素贝叶斯算法实现手写体识别的代码
时间: 2023-12-12 07:05:15 浏览: 107
下面是一个使用朴素贝叶斯算法实现手写数字识别的Python代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载手写数字数据集
digits = load_digits()
X, y = digits.data, digits.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练朴素贝叶斯分类器
nb_clf = GaussianNB()
nb_clf.fit(X_train, y_train)
# 在测试集上测试分类器性能
y_pred = nb_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('朴素贝叶斯分类器在测试集上的准确率为:', accuracy)
# 随机选取一张测试图像进行展示
index = np.random.choice(len(X_test))
test_image = X_test[index].reshape(8, 8)
plt.imshow(test_image, cmap='gray')
plt.axis('off')
plt.title('True label: %d, Predicted label: %d' % (y_test[index], y_pred[index]))
plt.show()
```
注:此代码使用了sklearn中的`load_digits()`函数加载手写数字数据集,适用于快速测试朴素贝叶斯算法的性能。在实际应用中,可能需要使用更大的数据集和更复杂的特征表示方式来提高分类器的性能。
阅读全文