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()
有关基本的数据结构在上篇博客已经介绍,这里直接给出结果。
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()
有关基本的数据结构在上篇博客已经介绍,这里直接给出结果。
相关文章推荐
- sklearn 自带手写字体数据集
- SVM对sklearn自带手写数字数据集进行分类
- 『Sklearn』框架自带数据集接口
- sklearn中digits手写字体数据集介绍
- 使用OpenCV自带的神经网络对MNIST手写字体进行识别
- TF:利用sklearn自带数据集使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线—Jason niu
- windows 下caffe 配置手写字体mnist数据集
- sklearn提供的自带的数据集
- 【深度学习】笔记2_caffe自带的第一个例子,Mnist手写数字识别代码,过程,网络详解
- tensorflow 1.01中GAN(生成对抗网络)手写字体生成例子(MINST)的测试
- 在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别
- tensorflow中手写数据集inputdata代码解释
- android系统自带的字体外观
- TF之AE:AE实现TF自带数据集数字真实值对比AE先encoder后decoder预测数字的精确对比—Jason niu
- caffe(一): 利用自带MNIST例程训练手写字符识别模型
- 网站怎样加载系统不自带的特殊字体?
- 【CNTK】CNTK学习笔记之制作自己的数据集(以MNIST手写数字数据集为例)
- sklearn学习:make_multilabel_classification——多标签数据集方法
- Cocos2d-X游戏开发之自带字体N种
- TensorFlow学习笔记(3)--实现Softmax逻辑回归识别手写数字(MNIST数据集)