超引數:演算法執行前需要決定的引數,如前文中的k值
模型引數:演算法過程中學習的引數,knn演算法沒有模型引數
1、怎麼找出最好的k值
in [
345]
: best_score =
0.0in [
346]
: best_k =-1
in [
347]
: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_k =k
...: best_score = score
in [
348]
:print
("best_k = "
,best_k)..
.:print
("best_score = "
,best_score)
best_k =
4best_score =
0.9916666666666667
如果找到的最好的k值在邊界,要往上稍微拓展
2、是否要考慮距離
kneighborsclassifier()函式中有乙個引數weight,控制是否考慮距離
in [
349]
: best_method =
""in [
350]
: best_score =
0.0in [
351]
: best_k =-1
in [
352]
:for method in
["uniform"
,"distance"]:
...:
for k in
range(1
,11):
...: knn_clf = kneighborsclassifier(n_neighbors=k, weights=method)..
.: knn_clf.fit(x_train,y_train)..
.: score = knn_clf.score(x_test,y_test)..
.:if score > best_score:..
.: best_k = k
...: best_score = score
...: best_method = method
in [
354]
:print
("best_k = "
,best_k)..
.:print
("best_score = "
,best_score)..
.:print
("best_method = "
,best_method)
best_k =
4best_score =
0.9916666666666667
best_method = uniform
3、明可夫斯基距離
—尤拉距離:直線距離,p=2
—曼哈頓距離:每個維度的距離差的和,p=1
獲得乙個新的超引數p
kneighborsclassifier()函式中有乙個引數p
in [
357]
: best_method ="".
..: best_score =
0.0...
: best_k =-1
...: best_p =-1
in [
358]
:for k in
range(1
,11):
...:
for p in
range(1
,6):
...: 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_k = k
...: best_score = score
...: best_p = p
in [
359]
:print
("best_k = "
,best_k)..
.:print
("best_score = "
,best_score)..
.:print
("best_p = "
,best_p)
best_k =
3best_score =
0.9888888888888889
best_p =
2
python學習第四章
1.建立字典 每個鍵和它的值之間用冒號隔開,項之間用逗號隔開,整個字典使用一對大括號括起來。2.字典基本操作 len d 返回d中項的數量。d k 返回關聯到鍵k上的值。d k v將值v關聯到鍵k上。del d k 刪除鍵位k的項。k in d檢查d中是否有含有鍵為k的項。3.字典的格式化字串 可以...
機器學習第四章學習筆記
真的不開學了嗎,家裡蹲一學期?頂不住了 而在學習的過程中,首先的問題就是解域 這兩個引數的解究竟在哪個範圍,確定了範圍再求出最優解 也就是在解域中求得最優解 首先對於資料預處理,使兩類在超平面的同一側 並行感知機和序列感知機是以樣本的給出方式劃分的,樣本一次全部給出稱為並行,乙個乙個給出稱為序列 而...
機器學習 第四章KNN演算法
k近鄰演算法是機器學習中最簡單的分類演算法之一,這篇文章主要講解knn演算法的在scikit learn中的使用,其中不僅僅包括了演算法本身,還有測試訓練集的分離,交叉驗證的使用,資料標準化等。首先用乙個簡單的例子引入knn演算法 import numpy as np import matplotl...