绘制的图形如图6所示 。
文章插图
输出结果如下:
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.基础概念线性回归研究的是一个目标变量和一个自变量之间的回归问题 , 但有时候在很多实际问题中 , 影响目标变量的自变量往往不止一个 , 而是多个 , 比如绵羊的产毛量这一变量同时受到绵羊体重、胸围、体长等多个变量的影响 , 因此需要设计一个目标变量与多个自变量间的回归分析 , 即多元回归分析 。由于线性回归并不适用于所有的数据 , 我们需要建立曲线来适应我们的数据 , 现实世界中的曲线关系很多都是增加多项式实现的 , 比如一个二次函数模型:
文章插图
再或者一个三次函数模型:
文章插图
这两个模型我们绘制的图形如下所示:
文章插图
多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析 ***。如果自变量只有一个时 , 称为一元多项式回归;如果自变量有多个时 , 称为多元多项式回归 。在一元回归分析中 , 如果依变量y与自变量x的关系为非线性的 , 但是又找不到适当的函数曲线来拟合 , 则可以采用一元多项式回归 。17.3小节主要讲解一元多次的多项式回归分析 , 一元m次多项式方程如下:
文章插图
其方程的求解过程希望读者下来自行学习 , 接下来作者主要讲解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()
推荐阅读
- 删档内测充了钱怎么办
- 拍拍贷借款在审核中是借到款了吗?
- 梦见家里养了一只白色的小狗 梦见家里养白色猫
- 2015我被广东医学院大学录取了,怎么查询自己在哪个校区
- 脸上痘痘抠破了怎么办 脸上痘痘怎么办啊
- 为什么我的电脑连接不了宽带,为什么座机好用电脑连不上网呢?
- 写教师节到了600字初中作文
- 开关贴纸 开关贴
- 单身者梦见别人把自己打了
- 解决电脑开不了机的思路方法 电脑开不了机了怎么办