sklearn 自帶手寫字型資料集(二)

2021-08-10 20:57:38 字數 2875 閱讀 8293

本篇部落格是使用機器學習自帶的手寫字型資料集來學習監督式機器學習

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()

有關基本的資料結構在上篇部落格已經介紹,這裡直接給出結果。

kaggle mnist手寫字型識別

現在的許多手寫字型識別 都是基於已有的mnist手寫字型資料集進行的,而kaggle需要用到 上給出的資料集並生成測試集的輸出用於提交。這裡選擇keras搭建卷積網路進行識別,可以直接生成測試集的結果,最終結果識別率大概97 左右的樣子。coding utf 8 created on tue jun...

keras實現手寫字型識別

losses損失函式 optimizers優化目標函式,比如sgd datasets常用資料集,比如mnist models序貫模型,比如sequential layers神經網路中的層,比如全連線層dense activations啟用函式 import keras 匯入keras from ke...

用word模仿手寫字型

首先我們來看一下效果圖 咳咳,是不是很有feel!將手寫字型解壓到資料夾下 開啟控制面板,搜尋字型,然後進入資料夾 然後將之前資料夾下的ttf檔案拖拽進去就可以了。接下來開啟word!開啟檔案 選項 信任中心 信任中心設定中選擇該選項 開啟檢視 巨集 新建 手寫字型 sub 手寫字型 手寫字型 巨集...