实战:利用Sklearn的朴素贝叶斯对手写数字数据集进行预测(附源码)
大家好,我是机器侠~
使用sklearn提供的朴素贝叶斯的API对手写数字数据集的数据进行预测
数据集
导入库
import numpy as np
from sklearn.naive_bayes import MultinomialNB, GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score
from sklearn import preprocessing
import matplotlib.pyplot as plt
加载数据
# 加载数据
digits = load_digits()
data = digits.data
# 查看数据维度
print(data.shape)
# 查看前5条数据
print(data[0:5])
查看第一张图片
# 查看第一个数字图像
print(digits.target[0])
plt.gray()
plt.imshow(digits.images[0])
plt.show()
可以看到是数字:0
分割数据
以7:3的比例分割为训练集和测试集
train_x, test_x, train_y, test_y = train_test_split(data, digits.target, test_size=0.3, random_state=4)
数据进行Z-Score规范化
# Z-Score
scaler = preprocessing.StandardScaler()
#train_scaled_x = scaler.fit_transform(train_x)
train_scaled_x = train_x
test_scaled_x = test_x
#test_scaled_x = scaler.transform(test_x)
用sklearn提供的朴素贝叶斯进行训练
model = GaussianNB(var_smoothing=1e-1)
model.fit(train_scaled_x, train_y)
用sklearn提供的朴素贝叶斯进行预测
pred_y = model.predict(test_scaled_x)
print("sklearn提供的朴素贝叶斯 accuracy: %.4f" % accuracy_score(test_y, pred_y))
sklearn提供的朴素贝叶斯 accuracy: 0.9352
最后预测准确度为 0.9352
- EOF -
1、
2、
3、
4、
5、
觉得本文对你有帮助?请分享给更多人
点赞和在看就是最大的支持❤️