练习1_scikit_learn自带数据集_sklearn和svm

Untitled2

 

 

 

 

In [1]:
from sklearn import datasets
import cv2
import numpy as np
from matplotlib import pyplot as plt
In [2]:
#加载数据集
digits=datasets.load_digits()
#print(digits.data[1])
#data中每一个向量都是一个图像,及digits.data[1]有64个数据,是8x8的矩阵的变换。
A=[]  #新建列表存放矩阵
#转8x8矩阵
for i in range(0,64,8):  #i属于[0,63] 包括0和63  
    #print(i)  #i=0,8,16...56 
    #print(digits.data[1][i:i+8])
    A.append(digits.data[1][i:i+8])
#打印A A为8x8矩阵
print(A)
#显示A
plt.imshow(A)

# 若生成灰度图   
# plt.imshow(A,cmap='gray') 或
# plt.imshow(A,cmap=plt.cm.gray)
print(digits.target[1]) #输出A的真实值 plt.show()

#上述过程可用numpy的reshape函数代替 plt.imshow(digits.data[1].reshape(8,8)) plt.show() B=[] #为每一个digits.data转为8x8的矩阵 for j in range(0,len(digits.data)): A=[] #A存储到B中后清空 for i in range(0,64,8): #i属于[0,63] 包括0和63 #print(i) #i=0,8,16...56 #print(digits.data[j][i:i+8]) A.append(digits.data[j][i:i+8]) #A为8x8的矩阵 B.insert(j,A) #B存储j=len(digits.data)个8x8矩阵 plt.imshow(B[0]) plt.show() print(digits.target[0]) #此时更改B[index]中index的值能显示不同的图像 plt.imshow(B[np.random.randint(0,len(digits.data))]) plt.show()
 
[array([ 0.,  0.,  0., 12., 13.,  5.,  0.,  0.]), array([ 0.,  0.,  0., 11., 16.,  9.,  0.,  0.]), array([ 0.,  0.,  3., 15., 16.,  6.,  0.,  0.]), array([ 0.,  7., 15., 16., 16.,  2.,  0.,  0.]), array([ 0.,  0.,  1., 16., 16.,  3.,  0.,  0.]), array([ 0.,  0.,  1., 16., 16.,  6.,  0.,  0.]), array([ 0.,  0.,  1., 16., 16.,  6.,  0.,  0.]), array([ 0.,  0.,  0., 11., 16., 10.,  0.,  0.])]
1
 
 
 
 
0
 
In [33]:
from sklearn import svm
clf=svm.SVC(gamma=0.001,C=100)
clf.fit(digits.data[:-10],digits.target[:-10])
print(clf.predict(digits.data[-10:]))  #输出预测结果 8
#print(digits.data[-1:])
#print(B[-1])
for i in range(len(digits.data)-10,len(digits.data)):
    plt.imshow(B[i]) #输出预测的原始图像
    plt.show()
print(digits.target[-10:])
 
[5 4 8 8 4 9 0 8 9 8]
 
 
 
 
 
 
 
 
 
 
 
[5 4 8 8 4 9 0 8 9 8]
In [32]:
print(len(digits.data))
 
1797
posted @ 2020-02-21 00:28  雪夜羽  阅读(265)  评论(0编辑  收藏  举报