從0開始的機器學習 knn演算法篇(1)

2022-09-09 14:57:24 字數 1506 閱讀 2066

在慕課網學習的基本內容做學習總結。

knn的演算法過程:

設定x_train是乙個資料集,裡面有一組資料。x_train是其中的乙個資料點。

import numpy  as np

from math import sqrt  //呼叫了math庫中的開平方

distances = [ ]  //存放兩點之間的距離

for x_train in  x_train:

d = sqrt(np.num((x_train - x)**2))  //計算兩點之間的尤拉距離

簡潔版演算法過程:

distances = [sqrt(np.num((x_train - x)**2)) ]

for x_train in x_train

獲得了距離之後呼叫numpy裡面的argsort方法,argsort可以給陣列中的數值排序,返回陣列中資料的索引值。

nearest = np.argsort(distances)

設 :k = 6

topk_y = [y_train[i] for i in nearest[:k]] //計算前k個資料  y_train是另一組代表結果屬性的資料,比如[1,1,1,0,1,0,1,1]具體語義結合語境,比如1代表零件***,0代表零件不合格等

from collection import counter

counter(topk_y)  //返回計數值 比如counter(),即陣列中每個數值的資料和該資料對應的個數

votes = counter(topk_y)

votes.most_common(1) //取數值排的最靠前的 如果是2就是前兩個多的 (適用於多維,大概)

predict_y = votes.most_common(1)[0][0] //獲得x可能的**值,比如1或者0

把這些在anaconda上面寫的**在pycharm裡面寫的話,演算法過程寫為乙個函式:

import numpy as np

from math import sqrt

from collections import counter

def knn_classify(k,x_train,y_train):

//增加幾個 斷言 保證使用者輸入資料的正確性

assert 1 <= k <= x_train.shape[0],

assert x_train.shape[0] == y_train.shape[0],\

assert x_train.shape[1] == x.shape[0],\

distances = [sqrt(np.num((x_train - x)**2))

for x_train in x_train]

nearest = np.argsort(distances)

topk_y = [y_train[i] for i in nearest[:k]]

votes = counter(topk_y)

return votes.most_common(1)[0][0]

從0開始的機器學習 knn演算法篇(2)

scikit learn中的knn演算法 from sklearn.neighbors import kneighborsclassfier kneighborsclassifier裡面包含了封裝好的knn演算法 sklearn裡面的所有演算法都是以物件導向的形式封裝的,所以使用時候需要先建立乙個物...

機器學習 從kNN開始

import numpy as np import operator def createdataset 資料集 group np.array 1.0,1.1 1.0,1.0 0,0 0,0.1 標籤labels a a b b return group,labels def classify0 i...

機器學習 從0開始

by 香蕉麥樂迪 機器學習簡介 機器學習是許多演算法的統稱,其中包含最近幾年火熱的深度學習,還包括許多適用於各種不同場景的其他機器學習演算法 邏輯斯特回歸,svm,knn,adaboost,em,kmeans等等 這些演算法從誕生到現在都有了幾十年的歷史 深度學習指的是深度神經網路,其中用於處理影象...