呼叫sklearn中knn演算法庫,資料級為matlab檔案,使用matplot讀取,並進行一維化處理
from scipy.io import loadmat as load
import matplotlib.pyplot as plt
from sklearn.neighbors import kneighborsclassifier as knn
import numpy as np
# 載入matlab格式資料檔案
train = load('train_32x32.mat')
test = load('test_32x32.mat')
train_samples = train['x']
train_labels = train['y']
test_samples = test['x']
test_labels = test['y']
def reformat(samples, labels):
"""改變原始資料的形狀
(高,寬,通道數,數)-> (數,高,寬,通道數)
把labers轉化為列向量
"""# 改變張量形狀資訊
samples = np.transpose(samples, (3, 0, 1, 2))
# 改變標籤資訊
labels = np.array([x[0] for x in labels])
one_hot_labels =
for num in labels:
one_hot =[0.0] * 10
if num == 10:
one_hot[0] = 1.0
else:
one_hot[num] = 1.0
labels = np.array(one_hot_labels).astype(np.float32)
return samples, labels
def normalize(samples):
"""將 0到255線性對映到 -1.0到1.0
"""samples = np.add.reduce(samples, keepdims = true, axis = 3)
samples = samples/128 - 1
return samples
def inspect(data_set, labels, i):
"""顯示第i張資料集"""
print(labels[i])
plt.imshow(data_set[i])
plt.show()
if __name__ == '__main__':
train_samples,train_labels= reformat(train_samples, train_labels)
train_samples = normalize(train_samples)
# 一維化影象
train_samples = train_samples.reshape(train_samples.shape[0], -1)
test_samples, test_labels = reformat(test_samples, test_labels)
test_samples = normalize(test_samples)
# 一維化影象
test_samples = test_samples.reshape(test_samples.shape[0], -1)
# 取100張進行**
test = test_samples[0:1000, :]
y = test_labels[0:1000, :]
knn_clf = knn(n_neighbors=5)
print(knn_clf.fit(train_samples, train_labels))
y_ = knn_clf.predict(test)
rate = (y_ == y).sum()/y_.size
print("正確率為%f"%rate)
手寫數字識別 實戰 KNN演算法識別手寫數字
鄰近演算法,或者說k最近鄰 knn,k nearestneighbor 分類演算法是資料探勘分類技術中最簡單的方法之一。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。下面是我學習knn演算法的思維導圖 其中距離的定義,各個距離的公式為 歐氏距離 n維空間的距...
KNN演算法識別手寫數字
前言 從現在開始博主要開始學習機器學習了,歡迎有共同興趣的人一起學習。廢話不多說了,開始上 一 將資料集csv檔案匯入到python中,並將csv格式轉為list格式 def dataset 讀取訓練集檔案路徑 path trains1.csv os.path.abspath machinelear...
KNN手寫數字識別
以歐幾里得距離度量樣本間的相似程度。對於乙個測試樣本首先計算該樣本與每個訓練樣本間的距離,然後按距離值對訓練樣本進行公升序排序,排序後前k個樣本進行投票,即哪個標籤出現的次數多,就將測試樣例劃為該類。程式使用資料 預先將資料處理為,標籤資訊轉化為txt文件。from numpy import imp...