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

来源:互联网 发布:cs1.6弹道优化脚本 编辑:程序博客网 时间:2024/05/24 06:33

本篇博客是使用机器学习自带的手写字体数据集来学习监督式机器学习

import matplotlib.pyplot as pltimport pylabimport numpy as npfrom sklearn import datasets,svm,metricsdigits = datasets.load_digits()#digits: bunch类型print(type(digits))#digits 包含的数据结构,字典类型数据key,valueprint('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 classifierclassifier = 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()


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






原创粉丝点击