機器學習之K 最鄰近演算法(2)

2021-09-01 23:51:57 字數 2657 閱讀 2575

前面一篇文章說了用knn演算法進行分類,現在嘗試用knn演算法進行線性回歸分析。不說了,直接上**。

"""

使用knn實現簡單的線性回歸.sk中進行回歸和分類的knn演算法的api不一樣,這點需要注意一下。

"""import numpy as np;

#from sklearn.neighbors import kneighborsclassifier as knn;

import matplotlib.pyplot as plt;

from sklearn.neighbors import kneighborsregressor as knn ;

x=np.random.rand(50,1);

y=np.cos(x)*5-0.1

plt.figure(1);

plt.scatter(x,y)

clf=knn(5)

clf.fit(x,y)

t=np.linspace(0,1,500)[:,np.newaxis];

y_pred=clf.predict(t)

plt.plot(t,y_pred);

#用來評價擬合情況

print(clf.score(x,y))

#plt.plot(x,y)

plt.show()

執行結果:

很簡單的一段**,下面我們嘗試將阿里天池入門大賽的蒸汽量的**來用knn演算法嘗試一下。看看效果。

from sklearn.neighbors import kneighborsregressor;

import numpy as np;

import matplotlib.pyplot as plt;

#載入訓練資料集

def numpyreaddata1(filepath):#filepath是檔案所在路徑。

train_data=np.loadtxt(filepath,dtype=str)

train_data=train_data[1:]

trainfloat=train_data.astype(np.float)#把字串轉為float型別

#把訓練集為兩部分,x_train作為輸入,y_train作為輸出。

x_train=trainfloat[:,0:38];

y_train=trainfloat[:,38:];

return x_train,y_train;

#載入測試資料集

def numpyreaddata2(filepath):#filepath是檔案所在路徑。

test_data=np.loadtxt(filepath,dtype=str)

test_data=test_data[1:]

trainfloat=test_data.astype(np.float)#把字串轉為float型別

#把訓練集為兩部分,x_train作為輸入,y_train作為輸出。

x_test=trainfloat[:,0:38];

return x_test;

def knn(x_train,y_train,x_test):

knn=kneighborsregressor(5)

knn.fit(x_train,y_train)

y_test=knn.predict(x_test)

knn.score(x_train,y_train)

return y_test

def write_txt(y_test):

prediction = np.around(y_test, decimals=3)

pre = prediction.astype(str).tolist();

plt.figure()

x_data=np.arange(0,1925)

# plt.scatter(x_data, y_date_train)

plt.plot(x_data, prediction, 'r-')

plt.show()

f2 = open('prediction.txt', 'r+')

for i in range(len(pre)):

f2.write("".join(pre[i]) + "\n")

f2.close()

pass

if __name__ == '__main__':

x_trian,y_trian=numpyreaddata1("./zhengqi/zhengqi_train.txt")

x_test=numpyreaddata2("./zhengqi/zhengqi_test.txt")

y_prec=knn(x_trian,y_trian,x_test);

write_txt(y_prec)

執行結果:

數值結果儲存在prediction.txt檔案中,由於現在沒有對資料做任何預處理,所以**的準確率不高

機器學習演算法 K鄰近演算法

coding utf 8 author whf from numpy import import operator def classify inx,dataset,labels,k 得到資料集的行數 shape方法用來得到矩陣或陣列的維數 datasetsize dataset.shape 0 t...

機器學習 KNN K 最鄰近演算法

k 近鄰學習是一種常用的監督學習方法,比如 判斷乙個人的人品,只需要觀察與他來往最密切的幾個人的人品好壞就可以得出,即 近朱者赤,近墨者黑 理論 原理 物以類聚,人以群分 乙個對於knn演算法解釋最清楚的圖如下所示 藍方塊和紅三角均是已有分類資料,當前的任務是將綠色圓塊進行分類判斷,判斷是屬於藍方塊...

機器學習 KNN K 最鄰近演算法

knn分類演算法,是理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。knn演算法中,所選擇的鄰居都是已經正確分類的物件。該方法在定類決策上只依據最鄰近的乙個或者幾個...