码迷,mamicode.com
首页 > 其他好文 > 详细

线性回归的扩展---多项式回归

时间:2020-05-13 23:12:17      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:可视化   直线   一个   enter   mode   info   ima   线性   mic   

线性模型可以拟合线性问题,这是毋庸置疑的,但实际中处理的数据往往比直线更加复杂的非线性数据。这时,依然可以尝试使用线性模型来解决这个问题。

对每个特征进行加权后作为新的特征,然后在这个扩展的数据集上训练线性模型
啥意思呢,举个例子:
假设函数为:

\[h_\theta(x)=\theta_0+\theta_1(x)+\theta_2(x)^2 \]

转换函数:

\[x_1 = (x) \]

\[x_2 = (x)^2 \]

这样便得到了:

\[h_\theta(x) = \theta_0+\theta_1x_1+\theta_2x_2 \]

这样便愉快实现了将非线性数据转换成了线性数据,困难是永远难不倒优秀的劳苦大众的
接下来,咱们又可以愉快的玩耍了
造数据(构造一个二次函数并加入噪点作为数据)

np.random.seed(42)
m = 100
X = 6* np.random.rand(m,1) - 3
y = 0.5 * X**2 + X + 2 + np.random.randn(m,1)

可视化显示:

技术图片

数据转换:
这里我们使用Sklearn中的PolynomialFeatures类将训练数据集进行转换,让训练集中每个特征的平方作为新特征

from sklearn.preprocessing import PolynomialFeatures
poly_features = PolynomialFeatures(degree=2,include_bias=False)
X_poly = poly_features.fit_transform(X)
print(X[0])
print(X_poly[0])

结果展示:

技术图片

这是可以发现,X_poly包含了原始特征X和这个特征的平方\(X^2\)
扩展数据集有了,现在可以使用LinearRegression模型进行拟合

from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X_poly,y)

技术图片
查看截距和系数

lin_reg.intercept_,lin_reg.coef_

技术图片
结果可视化显示

技术图片

线性回归的扩展---多项式回归

标签:可视化   直线   一个   enter   mode   info   ima   线性   mic   

原文地址:https://www.cnblogs.com/whiteBear/p/12885431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!