這篇文章主要介紹了Python如何確定多項(xiàng)式擬合/回歸的階數(shù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、扶綏網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為扶綏等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。通過 1至10 階來擬合對比 均方誤差及R評(píng)分,可以確定最優(yōu)的“大階數(shù)”。
import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression,Perceptron from sklearn.metrics import mean_squared_error,r2_score from sklearn.model_selection import train_test_split X = np.array([-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10]).reshape(-1, 1) y = np.array(2*(X**4) + X**2 + 9*X + 2) #y = np.array([300,500,0,-10,0,20,200,300,1000,800,4000,5000,10000,9000,22000]).reshape(-1, 1) x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3) rmses = [] degrees = np.arange(1, 10) min_rmse, min_deg,score = 1e10, 0 ,0 for deg in degrees: # 生成多項(xiàng)式特征集(如根據(jù)degree=3 ,生成 [[x,x**2,x**3]] ) poly = PolynomialFeatures(degree=deg, include_bias=False) x_train_poly = poly.fit_transform(x_train) # 多項(xiàng)式擬合 poly_reg = LinearRegression() poly_reg.fit(x_train_poly, y_train) #print(poly_reg.coef_,poly_reg.intercept_) #系數(shù)及常數(shù) # 測試集比較 x_test_poly = poly.fit_transform(x_test) y_test_pred = poly_reg.predict(x_test_poly) #mean_squared_error(y_true, y_pred) #均方誤差回歸損失,越小越好。 poly_rmse = np.sqrt(mean_squared_error(y_test, y_test_pred)) rmses.append(poly_rmse) # r2 范圍[0,1],R2越接近1擬合越好。 r2score = r2_score(y_test, y_test_pred) # degree交叉驗(yàn)證 if min_rmse > poly_rmse: min_rmse = poly_rmse min_deg = deg score = r2score print('degree = %s, RMSE = %.2f ,r2_score = %.2f' % (deg, poly_rmse,r2score)) fig = plt.figure() ax = fig.add_subplot(111) ax.plot(degrees, rmses) ax.set_yscale('log') ax.set_xlabel('Degree') ax.set_ylabel('RMSE') ax.set_title('Best degree = %s, RMSE = %.2f, r2_score = %.2f' %(min_deg, min_rmse,score)) plt.show()
因?yàn)橐蜃兞?Y = 2*(X**4) + X**2 + 9*X + 2 ,自變量和因變量是完整的公式,看圖很明顯,degree >=4 的都符合,擬合函數(shù)都正確。(RMSE 最小,R平方非負(fù)且接近于1,則模型最好)
如果將 Y 值改為如下:
y = np.array([300,500,0,-10,0,20,200,300,1000,800,4000,5000,10000,9000,22000]).reshape(-1, 1)
degree=3 是最好的,且 r 平方也最接近于1(注意:如果 R 平方為負(fù)數(shù),則不準(zhǔn)確,需再次測試。因樣本數(shù)據(jù)較少,可能也會(huì)判斷錯(cuò)誤)。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python如何確定多項(xiàng)式擬合/回歸的階數(shù)”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
標(biāo)題名稱:Python如何確定多項(xiàng)式擬合/回歸的階數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article10/ccdpgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司、服務(wù)器托管、網(wǎng)頁設(shè)計(jì)公司、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容