bobo老師機器學習筆記 第四課 KNN演算法

2021-08-29 01:16:47 字數 2958 閱讀 2312

主要分為四個檔案: knn.py中實現knn演算法、model_selection.py封裝了樣本資料的一些工具方法,比如切分為訓練集和測試集;

metrics用來對模型進行評估、client用來呼叫演算法進行執行

# -*- encoding: utf-8 -*-

"""實現knn的分類演算法

"""import numpy as np

from math import sqrt

from collections import counter

from metrics import accuracy_score

class knnclassifier(object):

"""k-近鄰演算法,(k nearest neighbour),簡稱knn

"""def __init__(self, k):

"""k表示

:param k: 表示參考的個數

"""self.k = k

def fit(self, x_train, y_train):

"""利用輸入的樣本集進行訓練knn演算法

:param x_train: x 訓練樣本集

:param y_train: y

:return:

"""self.x_train = x_train

self.y_train = y_train

return self

def predict(self, x_test):

"""對於輸入的測試樣本x進行**

:param x_test: 這個乙個行向量

:return:

"""assert x_test.shape[1] == self.x_train.shape[1], u'**樣本和訓練樣本的特徵值不相等'

# step1 用歐幾里得演算法計算x與周邊的距離

pridect_list =

for one_x in x_test:

distances = [sqrt(np.sum((x - one_x) ** 2)) for x in self.x_train]

sorted_index = np.argsort(distances)

fit_y = self.y_train[sorted_index[:self.k]]

target_label = counter(fit_y).most_common()[0][0]

return np.asarray(pridect_list, dtype='int32')

def scores(self, y_pridect, y_test):

return accuracy_score(y_pridect, y_test)

def __repr__(self):

return 'knn(k=%s)' % self.k

metrics檔案:

# -*- encoding: utf-8 -*-

"""這個檔案主要是計算一些指標比如準確度,用來評估演算法的好還

"""import numpy as np

def accuracy_score(y_test, y_pridect):

"""用來計算準確度

:param y_test: 樣本的標記測試集和

:param y_pridect: **集

:return:

"""assert y_pridect.shape[0] == y_test.shape[0], u'測試集和**集的資料個數不相等'

cnt = np.sum(y_test==y_pridect)

return cnt / len(y_pridect)

model_selection.py檔案:

# -*- encoding: utf-8 -*-

"""這個檔案主要是計算一些指標比如準確度,用來評估演算法的好還

"""import numpy as np

def accuracy_score(y_test, y_pridect):

"""用來計算準確度

:param y_test: 樣本的標記測試集和

:param y_pridect: **集

:return:

"""assert y_pridect.shape[0] == y_test.shape[0], u'測試集和**集的資料個數不相等'

cnt = np.sum(y_test==y_pridect)

return cnt / len(y_pridect)

client檔案進行測試:

from knn import knnclassifier

from sklearn import datasets

from model_selection import train_test_split

from metrics import accuracy_score

import numpy as np

if __name__ == '__main__':

knn = knnclassifier(3)

iris = datasets.load_iris()

x_train, y_train, x_test, y_test = train_test_split(iris.data, iris.target, 0.7)

classifier = knn.fit(x_train, y_train)

y_pridect = classifier.predict(x_test)

print(classifier.scores(y_pridect, y_test))

鋼琴第四課

因為此前每天都練琴,曲譜也都記住了,所以,週六,臨時被老師喊去時,非常自信。學到了很多知識。1.連貫性方面 連貫性要注意 其實,連貫性在於對曲目的熟練程度,手指的靈活程度,還有不同音之間的連貫跳躍 音要連續 不同音,要連續連線在一起 這個音落下,上個音才起來 2.節奏方面 四分音符要短快,彈到了,立...

C 學習第四課 串

字串 兩種形式,一種是c模式,一種是c 模式 c模式 char a 6 char a hello 幾種函式 strcpy str1,str2 將str2的內容複製到str1上 strcat str1,str2 將str2連到str1的後面 strlen str1 求取字串str1的長度 strcmp...

孫鑫VC第四課學習筆記

孫鑫 vc第四課學習筆記 訊息對映 1.vc中乙個點的資料結構 cpoint 2.訊息響應函式 如乙個on 響應函式,在標頭檔案中在注釋巨集之間有函式原型的宣告 afx msg 其中afx 表明是訊息響應函式的宣告。在原檔案中,有乙個 begin message map 和end message m...