機器學習分類演算法 knn (動作片or愛情片)

2021-10-08 08:33:32 字數 2217 閱讀 7676

本題:根據接吻次數和打鬥次數來判斷電影的型別

k-近鄰演算法步驟如下

計算已知類別資料集中的點與當前點之間的距離;

按照距離遞增次序排序;

選取與當前點距離最小的k個點;

確定前k個點所在類別的出現頻率;

返回前k個點所出現頻率最高的類別作為當前點的**分類。

import numpy as np

import operator"""

函式說明:建立資料集

parameters:

無returns:

group - 資料集

labels - 分類標籤

modify:

2017-07-13"""

def createdataset(

): #四組二維特徵

group = np.array(

[[1,101],[5,89],[108,5],[115,8]])

#四組特徵的標籤

labels =

['愛情片','愛情片','動作片','動作片'

]return group, labels"""

函式說明:knn演算法,分類器

parameters:

inx - 用於分類的資料(測試集)

dataset - 用於訓練的資料(訓練集)

labes - 分類標籤

k - knn演算法引數,選擇距離最小的k個點

returns:

sortedclasscount[0][0] - 分類結果

modify:

2017-07-13"""

def classify0(inx, dataset, labels, k):

#計算出距離,np.sum(a,axis = 0)

#axis為0是壓縮行,即將每一列的元素相加,將矩陣壓縮為一行

#np.sum(a,axis = 1)

#axis為1是壓縮列,即將每一行的元素相加,將矩陣壓縮為一列

distances = np.sum((inx - dataset)**2, axis=1)**0.5

#返回distances中元素從小到大排序後的索引值,argsort()函式返回索引值

sorteddistindices = distances.argsort(

)#定乙個記錄類別次數的字典

classcount =

for i in range(k):

#取出前k個元素的類別,根據索引值到標籤中去尋找「愛情片or動作片」

voteilabel = labels[sorteddistindices[i]

]#dict.get(key,default=none),字典的get()方法,返回指定鍵的值,如果值不在字典中返回預設值。

#計算類別次數

classcount[voteilabel]

= classcount.get(voteilabel,0) + 1

#python3中用items()替換python2中的iteritems()

#key=operator.itemgetter(1)根據字典的值進行排序

#key=operator.itemgetter(0)根據字典的鍵進行排序

#reverse降序排序字典

sortedclasscount = sorted(classcount.items(

),key=operator.itemgetter(1),reverse=true)

#返回次數最多的類別,即所要分類的類別

return sortedclasscount[0]

[0]if __name__ ==

'__main__'

:#if __name__ == '__main__'的意思是:

# 當.py檔案被直接執行時,if __name__ == '__main__'之下的**塊將被執行;

# 當.py檔案以模組形式被匯入時,if __name__ == '__main__'之下的**塊不被執行。

#建立資料集

group, labels = createdataset(

)#測試集

test

=[101,20]

#knn分類

test_class = classify0(test, group, labels, 3)

#列印分類結果

print(test_class)

機器學習分類演算法(一)k NN分類演算法

k kk nn分類器是最簡單的機器學習分類演算法之一,它的基本思想是 從訓練樣本集中找出與測試樣本 距離 最近的k個樣本作為此測試樣本的 鄰居 然後根據這k個樣本的類別基於一定規則進行投票表決,最高的決定為測試樣本的 類別。用乙個詞來說就是 近朱者赤近墨者黑 由以上所述可以得知,k近鄰分類演算法主要...

python 機器學習KNN分類演算法

k近鄰演算法是機器學習中最簡單的演算法,其可以做最基本的分類操作,偽 如下 對未知類別屬性的資料集中的每個點依次執行以下操作 1 計算已知類別資料集中的每個點與當前點之間的距離 2 按照距離遞增次序排序 3 選怒與當前點距離最小的k個點 4 確定前k個點所在類別出現的頻率 5 返回前k個點出現頻率最...

機器學習 KNN分類演算法(上)

k近鄰演算法是機器學習演算法最簡單的演算法,流程如下 1 計算測試物件到訓練集中每個物件的距離 2 按照距離的遠近排序 3 選取與當前測試物件最近的k個物件,作為該測試物件的鄰居 4 統計這k個鄰居的類別頻率 5 k個鄰居裡頻率最高的類別,即為測試物件的類別 1 自實現knn演算法import nu...