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

2022-09-09 14:57:23 字數 2249 閱讀 1993

scikit-learn中的knn演算法:

from sklearn.neighbors import kneighborsclassfier  //kneighborsclassifier裡面包含了封裝好的knn演算法

//sklearn裡面的所有演算法都是以物件導向的形式封裝的,所以使用時候需要先建立乙個物件。

knn_classifier = kneighborsclassfier(n_neighbors=6)  //建立物件。n_neighbors就是k值。

knn_classifier.fit(x_train,y_train) //fit就是擬合過程。任何乙個機器學習演算法都需要fit。fit裡面傳入的引數就是訓練集和標籤集

knn_classifier.predict() //這樣模型就存在於該物件中了。括號內需要傳入乙個矩陣。如果需要**的是乙個數值,也要寫成矩陣形式傳入。

x_predict = x.reshape(1,-1)  //只有乙個資料的話寫成矩陣形式

y_predict = knn_classifier.predict(x_predict) //進行**

y_predict(0) //即可輸出**值

自己寫並且封裝乙個knn演算法:

import numpy as np

from collections import counter

from math import sqrt

class knnclasssifier:

def __init__(self,k):

"""初始化knn分類器"""

assert k>=1, "k must be valid"

self.k = k

self._x_train = none

"_表示私有"

self._y_train = none

def fit(self,x_train,y_train):

"""根據訓練資料集x_train和y_train來訓練knn分類器"""

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

"the size of x_train must be equal to the size of y_train"

assert self.k <= x_train.shape[0], \

"the size of x_train must be at least k"

self._x_train = x_train

"接收使用者傳入的引數並賦值給變數"

self._y_train = y_train

return self

def predict(self,x_predict):

"""給定待**資料集x_predict,返回表示x_predict的結果向量"""

assert self._x_train is not none and self._y_train is not none

"must fit before predict"

assert x_predict.shape[1] == self._x_train.shape[1]

"the feature number of x_predict must be equal to x_train"

y_predict = [self._predict(x) for x in x_predict]

return np.array(y_predict)

def _predict(self,x):

"""給定單個帶**資料x,返回x的**值"""

assert x.shape[0] == self._x_train.shape[1]

"the feature number of x must be equal to x_train"

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

for x_train in self.x_train]

nearest = np.argsort(distances)

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

votes = counter(topk_y)

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

def __repr__(self):

return "knn(k=%d)" % self.k

然後就可以在anaconda裡用魔法命令呼叫了。

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

在慕課網學習的基本內容做學習總結。knn的演算法過程 設定x train是乙個資料集,裡面有一組資料。x train是其中的乙個資料點。import numpy as np from math import sqrt 呼叫了math庫中的開平方 distances 存放兩點之間的距離 for x t...

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