中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
用Python開(kāi)始機(jī)器學(xué)習(xí)(3:數(shù)據(jù)擬合與廣義線性回歸)

機(jī)器學(xué)習(xí)中的預(yù)測(cè)問(wèn)題通常分為2類:回歸分類。

簡(jiǎn)單的說(shuō)回歸就是預(yù)測(cè)數(shù)值,而分類是給數(shù)據(jù)打上標(biāo)簽歸類。

本文講述如何用Python進(jìn)行基本的數(shù)據(jù)擬合,以及如何對(duì)擬合結(jié)果的誤差進(jìn)行分析。


本例中使用一個(gè)2次函數(shù)加上隨機(jī)的擾動(dòng)來(lái)生成500個(gè)點(diǎn),然后嘗試用1、2、100次方的多項(xiàng)式對(duì)該數(shù)據(jù)進(jìn)行擬合。
擬合的目的是使得根據(jù)訓(xùn)練數(shù)據(jù)能夠擬合出一個(gè)多項(xiàng)式函數(shù),這個(gè)函數(shù)能夠很好的擬合現(xiàn)有數(shù)據(jù),并且能對(duì)未知的數(shù)據(jù)進(jìn)行預(yù)測(cè)。

代碼如下:


[python] view plain copy 

  1. import matplotlib.pyplot as plt  

  2. import numpy as np  

  3. import scipy as sp  

  4. from scipy.stats import norm  

  5. from sklearn.pipeline import Pipeline  

  6. from sklearn.linear_model import LinearRegression  

  7. from sklearn.preprocessing import PolynomialFeatures  

  8. from sklearn import linear_model  

  9.   

  10. ''''' 數(shù)據(jù)生成 '''  

  11. x = np.arange(010.002)  

  12. y = norm.rvs(0, size=500, scale=0.1)  

  13. y = y + x**2  

  14.   

  15. ''''' 均方誤差根 '''  

  16. def rmse(y_test, y):  

  17.     return sp.sqrt(sp.mean((y_test - y) ** 2))  

  18.   

  19. ''''' 與均值相比的優(yōu)秀程度,介于[0~1]。0表示不如均值。1表示完美預(yù)測(cè).這個(gè)版本的實(shí)現(xiàn)是參考scikit-learn官網(wǎng)文檔  '''  

  20. def R2(y_test, y_true):  

  21.     return 1 - ((y_test - y_true)**2).sum() / ((y_true - y_true.mean())**2).sum()  

  22.   

  23.   

  24. ''''' 這是Conway&White《機(jī)器學(xué)習(xí)使用案例解析》里的版本 '''  

  25. def R22(y_test, y_true):  

  26.     y_mean = np.array(y_true)  

  27.     y_mean[:] = y_mean.mean()  

  28.     return 1 - rmse(y_test, y_true) / rmse(y_mean, y_true)  

  29.   

  30.   

  31. plt.scatter(x, y, s=5)  

  32. degree = [1,2,100]  

  33. y_test = []  

  34. y_test = np.array(y_test)  

  35.   

  36.   

  37. for d in degree:  

  38.     clf = Pipeline([('poly', PolynomialFeatures(degree=d)),  

  39.                     ('linear', LinearRegression(fit_intercept=False))])  

  40.     clf.fit(x[:, np.newaxis], y)  

  41.     y_test = clf.predict(x[:, np.newaxis])  

  42.   

  43.     print(clf.named_steps['linear'].coef_)  

  44.     print('rmse=%.2f, R2=%.2f, R22=%.2f, clf.score=%.2f' %  

  45.       (rmse(y_test, y),  

  46.        R2(y_test, y),  

  47.        R22(y_test, y),  

  48.        clf.score(x[:, np.newaxis], y)))      

  49.       

  50.     plt.plot(x, y_test, linewidth=2)  

  51.       

  52. plt.grid()  

  53. plt.legend(['1','2','100'], loc='upper left')  

  54. plt.show()  

該程序運(yùn)行的顯示結(jié)果如下:


[-0.16140183  0.99268453]
rmse=0.13, R2=0.82, R22=0.58, clf.score=0.82

[ 0.00934527 -0.03591245  1.03065829]
rmse=0.11, R2=0.88, R22=0.66, clf.score=0.88
[  6.07130354e-02  -1.02247150e+00   6.66972089e+01  -1.85696012e+04
......

-9.43408707e+12  -9.78954604e+12  -9.99872105e+12  -1.00742526e+13
-1.00303296e+13  -9.88198843e+12  -9.64452002e+12  -9.33298267e+12
  -1.00580760e+12]

rmse=0.10, R2=0.89, R22=0.67, clf.score=0.89

顯示出的coef_就是多項(xiàng)式參數(shù)。如1次擬合的結(jié)果為

y = 0.99268453x -0.16140183 

這里我們要注意這幾點(diǎn):

1、誤差分析。

做回歸分析,常用的誤差主要有均方誤差根(RMSE)和R-平方(R2)。

RMSE是預(yù)測(cè)值與真實(shí)值的誤差平方根的均值。這種度量方法很流行(Netflix機(jī)器學(xué)習(xí)比賽的評(píng)價(jià)方法),是一種定量的權(quán)衡方法。

R2方法是將預(yù)測(cè)值跟只使用均值的情況下相比,看能好多少。其區(qū)間通常在(0,1)之間。0表示還不如什么都不預(yù)測(cè),直接取均值的情況,而1表示所有預(yù)測(cè)跟真實(shí)結(jié)果完美匹配的情況。

R2的計(jì)算方法,不同的文獻(xiàn)稍微有不同。如本文中函數(shù)R2是依據(jù)scikit-learn官網(wǎng)文檔實(shí)現(xiàn)的,跟clf.score函數(shù)結(jié)果一致。

而R22函數(shù)的實(shí)現(xiàn)來(lái)自Conway的著作《機(jī)器學(xué)習(xí)使用案例解析》,不同在于他用的是2個(gè)RMSE的比值來(lái)計(jì)算R2。

我們看到多項(xiàng)式次數(shù)為1的時(shí)候,雖然擬合的不太好,R2也能達(dá)到0.82。2次多項(xiàng)式提高到了0.88。而次數(shù)提高到100次,R2也只提高到了0.89。

2、過(guò)擬合。

使用100次方多項(xiàng)式做擬合,效果確實(shí)是高了一些,然而該模型的據(jù)測(cè)能力卻極其差勁。

而且注意看多項(xiàng)式系數(shù),出現(xiàn)了大量的大數(shù)值,甚至達(dá)到10的12次方。

這里我們修改代碼,將500個(gè)樣本中的最后2個(gè)從訓(xùn)練集中移除。然而在測(cè)試中卻仍然測(cè)試所有500個(gè)樣本。

clf.fit(x[:498, np.newaxis], y[:498])

這樣修改后的多項(xiàng)式擬合結(jié)果如下:


[-0.17933531  1.0052037 ]
rmse=0.12, R2=0.85, R22=0.61, clf.score=0.85
[-0.01631935  0.01922011  0.99193521]
rmse=0.10, R2=0.90, R22=0.69, clf.score=0.90

...

rmse=0.21, R2=0.57, R22=0.34, clf.score=0.57

僅僅只是缺少了最后2個(gè)訓(xùn)練樣本,紅線(100次方多項(xiàng)式擬合結(jié)果)的預(yù)測(cè)發(fā)生了劇烈的偏差,R2也急劇下降到0.57。

而反觀1,2次多項(xiàng)式的擬合結(jié)果,R2反而略微上升了。

這說(shuō)明高次多項(xiàng)式過(guò)度擬合了訓(xùn)練數(shù)據(jù),包括其中大量的噪音,導(dǎo)致其完全喪失了對(duì)數(shù)據(jù)趨勢(shì)的預(yù)測(cè)能力。前面也看到,100次多項(xiàng)式擬合出的系數(shù)數(shù)值無(wú)比巨大。人們自然想到通過(guò)在擬合過(guò)程中限制這些系數(shù)數(shù)值的大小來(lái)避免生成這種畸形的擬合函數(shù)。

其基本原理是將擬合多項(xiàng)式的所有系數(shù)絕對(duì)值之和(L1正則化)或者平方和(L2正則化)加入到懲罰模型中,并指定一個(gè)懲罰力度因子w,來(lái)避免產(chǎn)生這種畸形系數(shù)。

這樣的思想應(yīng)用在了嶺(Ridge)回歸(使用L2正則化)、Lasso法(使用L1正則化)、彈性網(wǎng)(Elastic net,使用L1+L2正則化)等方法中,都能有效避免過(guò)擬合。更多原理可以參考相關(guān)資料。

下面以嶺回歸為例看看100次多項(xiàng)式的擬合是否有效。將代碼修改如下:

clf = Pipeline([('poly', PolynomialFeatures(degree=d)),
                    ('linear', linear_model.Ridge ())])
clf.fit(x[:400, np.newaxis], y[:400])

結(jié)果如下:


[ 0.          0.75873781]
rmse=0.15, R2=0.78, R22=0.53, clf.score=0.78
[ 0.          0.35936882  0.52392172]
rmse=0.11, R2=0.87, R22=0.64, clf.score=0.87
[  0.00000000e+00   2.63903249e-01   3.14973328e-01   2.43389461e-01
   1.67075328e-01   1.10674280e-01   7.30672237e-02   4.88605804e-02
   ......
   3.70018540e-11   2.93631291e-11   2.32992690e-11   1.84860002e-11
   1.46657377e-11]
rmse=0.10, R2=0.90, R22=0.68, clf.score=0.90

可以看到,100次多項(xiàng)式的系數(shù)參數(shù)變得很小。大部分都接近于0.

另外值得注意的是,使用嶺回歸之類的懲罰模型后,1次和2次多項(xiàng)式回歸的R2值可能會(huì)稍微低于基本線性回歸。

然而這樣的模型,即使使用100次多項(xiàng)式,在訓(xùn)練400個(gè)樣本,預(yù)測(cè)500個(gè)樣本的情況下不僅有更小的R2誤差,而且還具備優(yōu)秀的預(yù)測(cè)能力。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python機(jī)器學(xué)習(xí)(十)經(jīng)典算法大全
使用Python的多項(xiàng)式回歸
我用 Python 算了下:編程教室的用戶數(shù)哪天能到100萬(wàn)
[Python從零到壹] 十二.機(jī)器學(xué)習(xí)之回歸分析萬(wàn)字總結(jié)全網(wǎng)首發(fā)(線性回歸、多項(xiàng)式回歸、邏輯回歸)...
時(shí)間序列的自回歸理論和實(shí)現(xiàn)
AI算法:邏輯回歸原理與實(shí)現(xiàn)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服