前面一篇文章說了用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演算法中,所選擇的鄰居都是已經正確分類的物件。該方法在定類決策上只依據最鄰近的乙個或者幾個...