其方程的求解过程希望读者下来自行学习,接下来作者主要讲解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()
输出图形如下图所示 , 其中黑色散点图表示真实的企业成本和利润的关系 , 绿色直线为一元线性回归方程 , 红色虚曲线为二次多项式方程 。它更接近真实的散点图 。
这里我们使用R方(R-Squared)来评估多项式回归预测的效果,R方也叫确定系数(Coefficient of Determination),它表示模型对现实数据拟合的程度 。计算R方的方法有几种,一元线性回归中R方等于皮尔逊积矩相关系数(Pearson Product Moment Correlation Coefficient)的平方,该方法计算的R方是一定介于0~1之间的正数 。另一种是Sklearn库提供的方法来计算R方 。R方计算代码如下:
print('1 r-squared', clf.score(X, Y))print('2 r-squared', regressor_quadratic.score(x_train_quadratic, Y))
输出如下所示:
('1 r-squared', 0.9118311887769025)('2 r-squared', 0.94073599498559335)
一元线性回归的R方值为0.9118,多项式回归的R方值为0.9407,说明数据集中超过94%的价格都可以通过模型解释 。最后补充5次项的拟合过程,下面只给出核心代码 。
推荐阅读
- 医保查询+参保登记+缴费 肇庆粤医保小程序操作指南
- 青海大学附属医院单管核酸报告在哪里查询?
- 微信怎么查看银行卡余额 微信怎么查看银行卡余额查询
- 可以查询别人的社保吗? 可以查询别人的社保吗怎么查
- 常州社保查询个人账户缴费明细
- 男人约你动机查询表 男人约会动机查询表
- 收到违章短信但是12123上查询不到 12123上查询不到违章信息讲解
- 招行信用卡账单怎么查询 招行信用卡账单怎么查询不到
- 上海大众4s店 上海大众4s店地址查询
- 常州社保查询个人账户
