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