往期回顾:
Python中有监督学习之回归分析(一)
线性回归预测糖尿病
在一元回归分析中,如果变量 y 与自变量 x的关系为非线性的,但又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。
1. PolynomialFeatures
多项式生成函数:
sklearn.preprocessing.PolynomialFeatures(degree=2, interaction_only=False, include_bias=True)
参数说明:
degree:多项式阶数,默认值是2
interaction_only:值如果是True,则会产生相互影响的特征集
include_bias:是否包含偏差列
PolynomialFeatures 类通过实例化一个多项式,建立等差数列矩阵,然后进行训练和预测,最后绘制相关的图形。
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
import matplotlib.pyplot as plt
# 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]]
# ================================ 线性回归分析 ================================
# 回归训练
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(u'预测成本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做变换
x_train_quadratic = quadratic_featurizer.fit_transform(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), 表示模型对现实数据拟合的程度。
print('1 r - squared', clf.score(X, Y))
print('2 r - squared', regressor_quadratic.score(x_train_quadratic, Y))
结果为:
1 r - squared 0.9118311887769117
2 r - squared 0.9407359949855933
学习模块:
机器学习基础-6.多项式回归
回归分析(三)——多项式回归解决非线性问题
文学模块:
九七五年二三月间,一个平平常常的日子,细的雨丝夹着一星半点的雪花,正纷纷淋淋地向大地飘洒着。时令己快到凉蛰,雪当然再不会存留,往往还没等落地,就已经消失得无踪无影了。黄土高原严寒而漫长的冬天看来不要过去,但那真正温暖的春天还远远地没有到来。
《平凡的世界》