vlambda博客
学习文章列表

实战:利用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

分割数据

73的比例分割为训练集和测试集
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、

觉得本文对你有帮助?请分享给更多人

点赞和在看就是最大的支持❤️