(一)機器學習入門與經典演算法之KNN演算法(第一期)

2021-10-07 04:27:41 字數 2962 閱讀 3157

對於knn的講解分兩期,這是上半部分

答:所謂的knn演算法就是:每個樣本都可以用它最接近的k個鄰居來代表。就類似於「近朱者赤近墨者黑」,通過你周圍的人來判斷你是怎麼樣的乙個人。

答:他可以用於分類**,也可以用於回歸**,但是一般用於分類**的比較多。

from sklearn import datasets

from sklearn.model_selection import train_test_split

from sklearn.neighbors import kneighborsclassifier

#1. 載入資料集

digits = datasets.load_digits(

)x = digits.data

y = digits.target

#2. 對資料集進行分割,分出訓練集(x_train,y_train)、測試集(x_test,y_test)

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.2)

# 3.建立knn分類器my_knn_clf,引數n_neighbors=5表示用它周圍的5個資料來**

my_knn_clf = kneighborsclassifier(n_neighbors=5)

# 4.將訓練集資料餵入,使用fit函式

my_knn_clf.fit(x_train, y_train)

# 5.用測試集進行測試,輸出乙個**值,使用predict進行**

y_predict = my_knn_clf.predict(x_test)

# 6.計算準確率

score = my_knn_clf.score(x_test, y_test)

print

(score)

from sklearn import datasets

from sklearn.model_selection import train_test_split

from sklearn.neighbors import kneighborsclassifier

digits = datasets.load_digits(

)x = digits.data

y = digits.target

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.2, random_state=

666)

# 假設最優的k為1,最優準確率為0

best_score =

0.0best_k =

1# 然後在(1,11)裡面選擇k的值,每得到乙個k就能計算出乙個準確率score,

# 將score和best_score進行比較,如果當前k得到的score比best_score好,則令best_k=k

# 如果k的值為(1,11)的邊緣值,例如k=10,則需要在乙個更大的範圍(10,15)測試一下有沒有比10更好的k

for k in

range(1

,11):

knn_clf = kneighborsclassifier(n_neighbors=k)

knn_clf.fit(x_train, y_train)

score = knn_clf.score(x_test, y_test)

if score > best_score:

best_score = score

best_k = k

print

('best_k = '

, best_k)

print

('best_score = '

, best_score)

from sklearn import datasets

from sklearn.model_selection import train_test_split

from sklearn.neighbors import kneighborsclassifier

digits = datasets.load_digits(

)x = digits.data

y = digits.target

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.2, random_state=

666)

best_score =

0.0best_k =

1best_p =

0for k in

range(1

,11):

for p in

range(1

,6):

"""weights = uniform的時候,就沒有p引數

weights = distance 時,需要有p引數"""

knn_clf = kneighborsclassifier(n_neighbors=k, weights=

"distance"

, p=p)

knn_clf.fit(x_train, y_train)

score = knn_clf.score(x_test, y_test)

if score > best_score:

best_p = p

best_score = score

best_k = k

print

('best_k = '

, best_k)

print

('best_score = '

, best_score)

print

('best_p = '

, best_p)

Python3 入門機器學習 經典演算法與應用

技術語言python 3 機器學習框架scikit learn 繪圖框架matplotlib 矩陣處理框架numpy idejupyter notebook 工欲善其事,必先利其器。在本章,我們將學習和機器學習相關的基礎工具的使用 jupyter notebook,numpy和matplotlib。...

機器學習之 KNN近鄰演算法(一)入門

是有監督學習的分類演算法 當 乙個新的值x的時候,根據它距離最近的k個點是什麼類別來判斷x屬於哪個類別。1.資料預處理 目標label轉換成數字 2.資料集進行二八分,測試knn模型計算的準確性 準備資料 moviename,kiss,action,type 我在時間盡頭等你,20,0,愛情 倩女幽...

機器學習經典演算法

函式名稱均為sklearn庫中的函式 1.線性回歸演算法 linearregression 其中常用的有 ridge 嶺回歸演算法,multitasklasso 多工lasso回歸演算法,elasticnet 彈性網眼演算法,lassolars lars套索演算法,orthogonalmatchin...