傳統機器學習 之KNN回歸演算法(二)

2021-10-04 13:27:48 字數 1514 閱讀 3711

回歸與分類概念,參考博文:

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