by28777換哪了 by28777( 四 )


繪制的圖形如圖6所示 。

by28777換哪了  by28777

文章插圖
輸出結果如下:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)預測結果 [ 196.51241167 109.98667708 121.31742804 245.95568858 204.75295782270.67732703 75.99442421 241.8354155 104.83633574 141.91879342126.46776938 208.8732309 234.62493762 152.21947611 159.42995399161.49009053 229.47459628 221.23405012 129.55797419 100.71606266118.22722323 168.70056841 227.41445974 115.13701842 163.55022706114.10695016 120.28735977 158.39988572 237.71514243 121.3174280498.65592612 123.37756458 205.78302609 95.56572131 154.27961264130.58804246 82.17483382 171.79077322 137.79852034 137.79852034190.33200206 83.20490209]真實結果 [ 175. 93. 168. 275. 293. 281. 72. 140. 189. 181. 209. 136.261. 113. 131. 174. 257. 55. 84. 42. 146. 212. 233. 91.111. 152. 120. 67. 310. 94. 183. 66. 173. 72. 49. 64.48. 178. 104. 132. 220. 57.]平方和計算: 83.192340827系數 [ 955.70303385]截距 153.000183957方差 0.427204267067
其中cost = np.mean(y_test-pre)**2表示計算預測結果和真實結果之間的平方和 , 為83.192340827 , 根據系數和截距得出其方程為:y = 955.70303385 * x + 153.000183957 。
三.多項式回歸分析1.基礎概念線性回歸研究的是一個目標變量和一個自變量之間的回歸問題 , 但有時候在很多實際問題中 , 影響目標變量的自變量往往不止一個 , 而是多個 , 比如綿羊的產毛量這一變量同時受到綿羊體重、胸圍、體長等多個變量的影響 , 因此需要設計一個目標變量與多個自變量間的回歸分析 , 即多元回歸分析 。由于線性回歸并不適用于所有的數據 , 我們需要建立曲線來適應我們的數據 , 現實世界中的曲線關系很多都是增加多項式實現的 , 比如一個二次函數模型:
by28777換哪了  by28777

文章插圖
再或者一個三次函數模型:
by28777換哪了  by28777

文章插圖
這兩個模型我們繪制的圖形如下所示:
by28777換哪了  by28777

文章插圖
多項式回歸(Polynomial Regression)是研究一個因變量與一個或多個自變量間多項式的回歸分析 ***。如果自變量只有一個時 , 稱為一元多項式回歸;如果自變量有多個時 , 稱為多元多項式回歸 。在一元回歸分析中 , 如果依變量y與自變量x的關系為非線性的 , 但是又找不到適當的函數曲線來擬合 , 則可以采用一元多項式回歸 。17.3小節主要講解一元多次的多項式回歸分析 , 一元m次多項式方程如下:
by28777換哪了  by28777

文章插圖
其方程的求解過程希望讀者下來自行學習 , 接下來作者主要講解Python如何代碼實現多項式回歸分析的 。
2.PolynomialFeaturesPython的多項式回歸需要導入sklearn.preprocessing子類中PolynomialFeatures類實現 。PolynomialFeatures對應的函數原型如下:
class sklearn.preprocessing.PolynomialFeatures(degree=2,interaction_only=False,include_bias=True)
PolynomialFeatures類在Sklearn官網給出的解釋是:專門產生多項式的模型或類 , 并且多項式包含的是相互影響的特征集 。共有三個參數 , degree表示多項式階數 , 一般默認值是2;interaction_only如果值是true(默認是False) , 則會產生相互影響的特征集;include_bias表示是否包含偏差列 。
PolynomialFeatures類通過實例化一個多項式 , 建立等差數列矩陣 , 然后進行訓練和預測 , 最后繪制相關圖形 , 接下來與前面的一元線性回歸分析進行對比試驗 。
3.多項式回歸預測成本和利潤本小節主要講解多項式回歸分析實例 , 分析的數據集是表17.1提供的企業成本和利潤數據集 。下面直接給出線性回歸和多項式回歸分析對比的完整代碼和詳細注釋 。
# -*- coding: utf-8 -*-# By:Eastmount CSDN 2021-07-03from sklearn.linear_model import LinearRegressionfrom sklearn.preprocessing import PolynomialFeaturesimport matplotlib.pyplot as pltimport numpy as np#X表示企業成本 Y表示企業利潤X = [[400], [450], [486], [500], [510], [525], [540], [549], [558], [590], [610], [640], [680], [750], [900]]Y = [[80], [89], [92], [102], [121], [160], [180], [189], [199], [203], [247], [250], [259], [289], [356]]print('數據集X: ', X)print('數據集Y: ', Y)#之一步 線性回歸分析clf = LinearRegression()clf.fit(X, Y)X2 = [[400], [750], [950]]Y2 = clf.predict(X2)print(Y2)res = clf.predict(np.array([1200]).reshape(-1, 1))[0]print('預測成本1200元的利潤:$%.1f' % res)plt.plot(X, Y, 'ks') #繪制訓練數據集散點圖plt.plot(X2, Y2, 'g-') #繪制預測數據集直線#第二步 多項式回歸分析xx = np.linspace(350,950,100) #350到950等差數列quadratic_featurizer = PolynomialFeatures(degree = 2) #實例化一個二次多項式x_train_quadratic = quadratic_featurizer.fit_transform(X) #用二次多項式x做變換X_test_quadratic = quadratic_featurizer.transform(X2)regressor_quadratic = LinearRegression()regressor_quadratic.fit(x_train_quadratic, Y)#把訓練好X值的多項式特征實例應用到一系列點上,形成矩陣xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))plt.plot(xx, regressor_quadratic.predict(xx_quadratic), "r--",label="$y = ax^2 + bx + c$",linewidth=2)plt.legend()plt.show()

推薦閱讀