练习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()
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:])
In [32]:
print(len(digits.data))