日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > ChatGpt >内容正文

ChatGpt

【火炉炼AI】机器学习031-KNN回归器模型的构建

發(fā)布時(shí)間:2024/1/8 ChatGpt 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【火炉炼AI】机器学习031-KNN回归器模型的构建 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【火爐煉AI】機(jī)器學(xué)習(xí)031-KNN回歸器模型的構(gòu)建

(本文所使用的Python庫(kù)和版本號(hào): Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

在上一篇文章中我們學(xué)習(xí)了構(gòu)建KNN分類器模型,但是KNN不僅可以用于分類問(wèn)題,還可以用于回歸問(wèn)題,本章我們來(lái)學(xué)習(xí)KNN回歸模型的構(gòu)建和訓(xùn)練。


1. 準(zhǔn)備數(shù)據(jù)集

此處我們使用隨機(jī)函數(shù)構(gòu)建了序列型數(shù)據(jù)集,其產(chǎn)生方式是用函數(shù)np.sinc()來(lái)產(chǎn)生y值。

# 準(zhǔn)備數(shù)據(jù)集,此處用隨機(jī)的方式生成一些樣本數(shù)據(jù) amplitute=10 num_points=100 dataset_X=amplitute*np.random.rand(num_points,1)-0.5*amplitute dataset_y=np.sinc(dataset_X).ravel() dataset_y+=0.2*(0.5-np.random.rand(dataset_y.size)) print(dataset_X.shape) print(dataset_y.shape)

用plt將該數(shù)據(jù)集繪制到圖表中,可以看到如下結(jié)果。


2. KNN回歸模型的構(gòu)建和訓(xùn)練

構(gòu)建和訓(xùn)練KNN回歸器與KNN分類器一樣簡(jiǎn)單,如下代碼。

# 構(gòu)建KNN回歸模型 from sklearn.neighbors import KNeighborsRegressor K=8 KNN_regressor=KNeighborsRegressor(K,weights='distance') KNN_regressor.fit(dataset_X,dataset_y)

雖然此處構(gòu)建了KNN回歸器并對(duì)該回歸器進(jìn)行了訓(xùn)練,可是怎么知道訓(xùn)練結(jié)果了?

如下我定義了一個(gè)繪圖函數(shù),可以用散點(diǎn)圖的方式來(lái)繪制原始的數(shù)據(jù)集和預(yù)測(cè)之后的數(shù)據(jù)集

# 將回歸器繪制到圖中 def plot_regressor(regressor, X, y):# 將數(shù)據(jù)集繪制到圖表中看看分布情況plt.scatter(X,y,color='k',marker='o',label='dataset')predicted=regressor.predict(X)plt.scatter(dataset_X,predicted,color='blue',marker='*',label='predicted')plt.xlim(X.min() - 1, X.max() + 1)plt.ylim(y.min() - 0.2, y.max() + 0.2)plt.legend()plt.show()

在本數(shù)據(jù)集上的表現(xiàn)可以從下圖中看出:

上面可以看出該KNN回歸器在訓(xùn)練集上的表現(xiàn)貌似還不錯(cuò),那么怎么用該訓(xùn)練完成的KNN回歸器來(lái)預(yù)測(cè)新數(shù)據(jù)集了?如下我們先構(gòu)建一序列新樣本數(shù)據(jù),然后將該樣本數(shù)據(jù)繪制到圖中,看看其分布是否符合原來(lái)的分布特性。

# 下面用本KNN回歸器來(lái)預(yù)測(cè)新樣本數(shù)據(jù),如下 # 構(gòu)建了10倍的新數(shù)據(jù),并且建立第二個(gè)軸,用于KNNregressor.predict new_samples=np.linspace(-0.5*amplitute, 0.5*amplitute, 10*num_points)[:, np.newaxis] new_predicted=KNN_regressor.predict(new_samples)# 把原始數(shù)據(jù)也畫上來(lái) plt.scatter(dataset_X,dataset_y,color='k',marker='o',label='dataset') plt.plot(new_samples,new_predicted,color='r',linestyle='-',label='new_samples') plt.legend()

得到的結(jié)果圖貌似有非常嚴(yán)重的過(guò)擬合,如下圖:

########################小**********結(jié)###############################

1,KNN回歸器的構(gòu)建,訓(xùn)練,預(yù)測(cè)和KNN分類器基本一致。

2,我在使用KNN回歸器對(duì)訓(xùn)練集進(jìn)行預(yù)測(cè),得到的預(yù)測(cè)值竟然和訓(xùn)練集中的Y值完全一致,一模一樣,我反復(fù)檢查了好多遍,還是這個(gè)結(jié)果,剛開始以為是K值太小導(dǎo)致過(guò)擬合,但是修改K后仍然有這種情況,這個(gè)現(xiàn)象不知道其他人遇到?jīng)]有,我找了好久都沒找到原因所在。

#################################################################


注:本部分代碼已經(jīng)全部上傳到(我的github)上,歡迎下載。

參考資料:

1, Python機(jī)器學(xué)習(xí)經(jīng)典實(shí)例,Prateek Joshi著,陶俊杰,陳小莉譯

總結(jié)

以上是生活随笔為你收集整理的【火炉炼AI】机器学习031-KNN回归器模型的构建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。