回歸與分類概念,參考博文:
knn做回歸和分類的主要區別在於最後做**時候的決策方式不同。knn做分類**時,一般是選擇多數表決法,即訓練集裡和**的樣本特徵最近的k個樣本,**為裡面有最多類別數的類別。而knn做回歸時,一般是選擇平均法,即最近的k個樣本的樣本輸出的平均值作為回歸**值。
1、計算樣本到資料集中其它每個樣本的距離。
2、按照距離的遠近排序。
3、選取與當前樣本最近的k個樣本,作為該樣本的鄰居。
4、求這k個鄰居的輸出值(標籤值)的均值作為新樣本的輸出。
import numpy as np
#匯入knn演算法包
from sklearn.neighbors import kneighborsregressor
#匯入誤差函式
from sklearn.metrics import mean_squared_error,mean_absolute_error
#匯入標準化包
from sklearn.preprocessing import standardscaler # 標準化資料
x_train = np.array([[158,1],[170,1],[183,1],[191,1],[155,0],[163,0],[180,0],[158,0],[170,0]])
y_train = [64,86,84,80,49,59,67,54,67]
x_test = np.array([[168,1],[180,1],[160,0],[169,0]])
y_test = [65,96,52,67]
ss = standardscaler()
x_train_scaled = ss.fit_transform(x_train)
x_test_scaled = ss.transform(x_test)
k = 3
kn = kneighborsregressor(n_neighbors=k)
#提問,不是說knn沒有訓練過程嗎?為什麼還要呼叫fit函式呢?
kn.fit(x_train_scaled,y_train)
predictions = kn.predict(x_test_scaled)
print('**的資料:',predictions)
print('mae為',mean_absolute_error(y_test,predictions)) # 平均絕對誤差
print('mse為',mean_squared_error(y_test,predictions)) # 均方誤差
輸出結果
**的資料: [78. 83.33333333 54. 64.33333333]
mae為 7.583333333333336
mse為 85.13888888888893
傳統機器學習模型knn
一種簡單的分類模型 分類依據 看離待分點最近的k個鄰居屬於哪個分類的最多,通過調整k的值,可能會得到不同的分類效果 步驟 1.給出已標註好的資料點i i 1,n 的座標 xi,yi x i,y i xi yi 以及類別t it i ti 取值為0或1 2.給出新加入點的座標 x0,y0 x 0,y ...
機器學習之KNN演算法
在幾位志同道合的小夥伴的帶領下,開始了機器學習的路程,然而一切並不是想象的那麼簡單,因此本文記錄了自己的學習路程,希望還能堅持做好這件事。knn演算法是機器學習中屬於比較簡單的演算法,容易理解和閱讀。1.knn的應用 客戶流失 欺詐偵測等 更適合於稀有事件的分類問題 2.優缺點 優點 這是乙個簡單有...
機器學習演算法之KNN
物以類聚 人以群分,乙個例項與它周圍的例項屬於同一類的概率較大。給定乙個訓練資料集,對新輸入的例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為這個類。這裡,選用了歐氏距離,k的預設值為3,使用了sklearn提供的digits資料集來進行測試。inpu...