机器学习(四)—— 多项式回归
多项式回归1. 概述多项式回归,回归函数是回归变量多项式的回归。多项式回归模型是线性回归模型的一种,此时回归函数关于回归系数是线性的——百度百科使用多项式回归可以使回归模型拟合的更好如有一元多项式:y=w0+w1x+w2x**2w3x**3+...+wdx**dw0、w1、……、wd为多个参数项此时可以将高次项看作对一次项的扩展 转换为多元线性函数即:y=w0+w1x1+w2x2+w3x3+...
·
多项式回归
1. 概述
多项式回归,回归函数是回归变量多项式的回归。多项式回归模型是线性回归模型的一种,此时回归函数关于回归系数是线性的 ——百度百科
使用多项式回归可以使回归模型拟合的更好
如有一元多项式:y=w0+w1x+w2x**2w3x**3+...+wdx**d
w0、w1、……、wd为多个参数项
此时可以将高次项看作对一次项的扩展 转换为多元线性函数
即:
y=w0+w1x1+w2x2+w3x3+...+wdxd (复合函数)
x1 = x
x2 = x**2
……
所以多项式回归可以看作是多元线性回归,按照类似一元线性回归的处理获取到最佳的模型参数w0、w1、……组合
2. 一元多项式回归模型
一元多项式回归的步骤:
a、将一元多项式回归转换为多元线性回归(给出最高次即可);
b、将得到的多元线性回归中的w0、w1...作为样本特征,在LinearRegression模型中进行训练
对应代码:
import sklearn.pipeline as pl
import sklearn.preprocessing as sp
import sklearn.linear_model as lm
model = pl.make_pipeline( # pl为sklearn的数据管线 作用:实现两个步骤顺序执行
sp.polynomialFeatures(最高次幂), # 多项式特征扩展,将一元多项式转换为多元线性方程
lm.LinearRegression() # 多元线性回归模型训练
)
代码示例:
import sklearn.pipeline as pl
import sklearn.preprocessing as sp
import sklearn.linear_model as lm
import numpy as np
import sklearn.metrics as sm
import matplotlib.pyplot as plt
tx = np.array(
[0.5, 0.6, 0.8, 1.1, 1.4, 1.6, 1.7, 2.0, 2.5, 2.6, 3.0, 3.1, 3.3, 3.6, 3.8, 3.9, 4.0, 4.1, 4.2])
ty = np.array(
[5.0, 5.5, 6.0, 6.8, 7.0, 11, 8.4, 9.0, 9.2, 10.5, 11, 11.1, 12.0, 13.3, 13.4, 15.7, 16, 14.8, 14.9])
tx_arr = tx.reshape(-1, 1)
# 多项式模型训练
model = pl.make_pipeline(sp.PolynomialFeatures(10), lm.LinearRegression())
model.fit(tx_arr, ty)
# 测试
res = model.predict(tx_arr)
# 训练集评分
print(sm.r2_score(ty, res))
# 画图
plt.figure('polynomial regression', facecolor='lightgray')
plt.title('polynomial regression', fontsize=18)
plt.grid(linestyle=':')
plt.scatter(tx, ty, s=80, color='dodgerblue', label='simple points')
plt.plot(tx, res, color='orangered', label='LR')
plt.legend()
plt.show()
由上图可以看出得到的拟合模型是一条没有规律的曲线,随着sp.PolynomialFeatures()中最高次幂的增大,拟合度会随之增加,但是达到一定的拟合度后,模型预测结果偏差会出现逐渐增大的现象,即过拟合现象
相关概念:
欠拟合:过于简单的模型,无论是训练数据还是测试数据都无法给出足够精度的现象;
过拟合:过于复杂的模型,对于训练数据具有很高的精度,但对于测试数据通常精度很低的现象;
所以多项式拟合需要根据实际情况对模型进行调整、测试
总结
前面提到的线性回归模型、岭回归模型、多项式回归模型都属于基于模型的机器学习的模型;后边会提到基于实例的机器学习的模型:决策树、正向激励、随机森林
更多推荐
已为社区贡献1条内容
所有评论(0)