在慕課網學習的基本內容做學習總結。
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等等 這些演算法從誕生到現在都有了幾十年的歷史 深度學習指的是深度神經網路,其中用於處理影象...