機器學習之1 1 kNN實踐

2021-07-12 03:10:07 字數 1964 閱讀 3975

這是machine learning in action 裡面的例子,簡單地使用knn演算法進行分類,**和資料可以在這裡找到:

因為不同的資料其絕對值可能差別很大,因此對於距離的計算會有很大的影響,因而需要對資料進行歸一化,使他們的取值都在0-1之間。

這裡簡單地認為三個維度的資料的權值都是一致的,因此都歸一化到0-1之間,如果認為有不同的權值可以做不同的處理。

歸一化公式:

new_val = (old_val - min)/(max-min)
歸一化**:

# knn.py

defauto_norm

(data_set):

# 把矩陣歸一化,yeah!,這裡可以對不同的權值進行處理嘍?

# 這裡處理是認為所有的幾個變數的權值是一致的

# 歸一化公式:new_val = (old_val - min)/(max - min)

min_vals = data_set.min(0)

max_vals = data_set.max(0) # 分別是一列中的最大值們和最小值們

ranges = max_vals - min_vals

m = data_set.shape[0]

norm_data_set = data_set - np.tile(min_vals, (m, 1))

norm_data_set = norm_data_set / np.tile(ranges, (m, 1))

return norm_data_set, ranges, min_vals

為了對分類器進行測試,我們僅僅選取其中的百分之九十的資料作為訓練集,而使用其中百分之十的資料用來測試我們實現的分類器。

分類器的**:

# knn.py

defdating_class_test

(): train_ration = 0.10

# 訓練的比例,百分之十的資料用於測試

data_matrix, data_labels = file2matrix('./data/datingtestset.txt')

norm_matrix, ranges, min_vals = auto_norm(data_matrix) # 得到歸一化之後的矩陣

m = norm_matrix.shape[0] # 資料集的總的列數

num_test_vecs = int(m * train_ration) # 用於測試的資料數目,百分之十

error_count = 0.0

# 出錯的數目

for i in range(num_test_vecs):

classify_result = classify0(norm_matrix[i], # 測試的資料,前百分之十的資料中的一列

norm_matrix[num_test_vecs:m, :], # 用於分類的資料,二維矩陣中後面的百分之九十

data_labels[num_test_vecs:m], 3) # 用於分類的類別,類別中後面的百分之九十,還有3是k

print

'the classifier came back with: %d, the real answer is: %d' % \

(classify_result, data_labels[i])

if classify_result != data_labels[i]:

error_count += 1.0

print

'the total error rate is: %f' % (error_count / float(num_test_vecs))

執行**:

# run.py

import knn

knn.dating_class_test()

改變k的取值,錯誤率大概在百分之五左右。

機器學習之KNN

knn主要應用於文字分類 聚類分析 分析 降維等 中心思想是採用測量不同特徵值之間的距離方法進行分類 演算法非常簡單,不過這是乙個監督演算法,訓練資料需要經過人工標記。演算法中心思想是 計算候選樣本到所有訓練樣本之間的距離,選取k個最近距離資料中出現次數最多的分類作為新樣本的類別。from nump...

機器學習之KNN

knn分類演算法 k nearest neighbors classification 即k近鄰演算法 給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分類到這個類中。核心思想 要確定測試樣本屬於哪一類,就尋找所有訓練樣本中與...

機器學習之KNN

以下部落格主要由兩部分構成。一是理論講解,而是 實現 因為工程上使用knn的頻率不是很高,所以 不是目的,一些 中的技巧就顯得很重要了 首先knn是什麼?k nearest neighbors knn 以下的均來自 貪心科技 不是打廣告,純粹是尊重智財權。因為便於投票分類 怎麼選擇合適的k,一般會用...