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()

推荐阅读