對於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...