您的位置:首页 > 其它

sklearn 自带手写字体数据集(二)

2017-11-16 11:51 232 查看
本篇博客是使用机器学习自带的手写字体数据集来学习监督式机器学习

import matplotlib.pyplot as plt
import pylab
import numpy as np
from sklearn import datasets,svm,metrics

digits = datasets.load_digits()

#digits: bunch类型
print(type(digits))

#digits 包含的数据结构,字典类型数据key,value
print('digits.keys() = ',digits.keys())

#imgaes 是一个三维矩阵1797 张 8 * 8的图片
print('digits.images.shape = ',digits.images.shape)
print('digits.images = ',digits.images)
#plt.gray()
#plt.matshow(digits.images[0])
#plt.show()

#data中包含1797个样本,每个样本包括8*8像素的图像,其实就是将8*8 的images按行展开成一行
print('digits.data.shape = ',digits.data.shape)
print('digits.data = ',digits.data)

#target 是一个1797维度的Vector,指明每张图片的标签,也就是每张图片代表的数字
print('digits.target.shape = ',digits.target.shape)
print('digits.target = ',digits.target)

#数据集中所有标签值,[0,1,2,3,4,5,6,7,8,9]
print('digits.target_names.shape = ',digits.target_names.shape)
print('digits.target_names = ',digits.target_names)

#print('digits.DESCR = ',digits.DESCR)

#zip是组合称为一个tuple,然后变成一个列表,即建立training和label的对应关系
images_and_labels = list(zip(digits.images,digits.target))
for index, (image, label) in enumerate(images_and_labels[:4]):
#subplot的含义是将图分成一个2行4列的区域,然后随着index变化来显示图片
plt.subplot(2, 4, index + 1)
#关掉图像的坐标
plt.axis('off')
#image是要绘制的图像或者数组,cmp是颜色图谱,
plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
#标题
plt.title('Training: %i' % label)
plt.show()

n_samples = len(digits.images)
print('number of sample:%s'% n_samples)
data = digits.images.reshape((n_samples,-1))

# Create a classifier: a support vector classifier
classifier = svm.SVC(gamma = 0.001)
classifier.fit(data[:int(n_samples/2)],digits.target[:int(n_samples/2)])

expected = digits.target[int(n_samples/2):]
predicted = classifier.predict(data[int(n_samples/2):])

print("Classification report for classifier %s:\n%s\n"
% (classifier, metrics.classification_report(expected, predicted)))
print("Confusion matrix:\n%s" % metrics.confusion_matrix(expected, predicted))

images_and_predictions = list(zip(digits.images[int(n_samples / 2):], predicted))
for index, (image, prediction) in enumerate(images_and_predictions[:4]):
plt.subplot(2, 4, index + 5)
plt.axis('off')
plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
plt.title('Prediction: %i' % prediction)

plt.show()


有关基本的数据结构在上篇博客已经介绍,这里直接给出结果。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: