多项式回归-Polynomial regression

本文介绍如何通过多项式回归提升线性模型的表现能力,特别是面对非线性数据时。利用PolynomialFeatures进行特征升维,使得线性模型能够更好地拟合复杂的数据分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用线性算法去拟合非线性的y

在这里插入图片描述

多项式回归:叫回归但并不是去做拟合的算法
PolynomialFeatures是来做预处理的,来转换我们的数据,把数据进行升维!
注意注意!!这里是改变数据,把数据整理为类似线性,所以模型依旧是线性回归

Q:升维有什么用?
A:升维就是增加更多的影响Y结果的因素,这样考虑的更全面,最终是要增加准确率!
还有时候,就像PolynomialFeatures去做升维,是为了让线性模型去拟合非线性的数据!

Q:PolynomialFeatures是怎么升维的?
A:可以传入degree超参数,如果等于2,那么就会在原有维度基础之上增加二阶的数据变化!
更高阶的以此类推

Q:如果数据是非线性的变化,但是就想用线性的模型去拟合这个非线性的数据,怎么办?
A:1,非线性的数据去找非线性的算法生成的模型去拟合
2,可以把非线性的数据进行变化,变成类似线性的变化,然后使用线性的模型去拟合
PolynomialFeatures类其实就是这里说的第二种方式

代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

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

plt.plot(X, y, 'b.')

d = {1: 'g-', 2: 'r+', 10: 'y*'}
for i in d:
   poly_features = PolynomialFeatures(degree=i, include_bias=False)
   X_poly = poly_features.fit_transform(X)
   print(X[0])
   print(X_poly[0])
   print(X_poly[:, 0])

   lin_reg = LinearRegression(fit_intercept=True)
   lin_reg.fit(X_poly, y)
   print(lin_reg.intercept_, lin_reg.coef_)

   y_predict = lin_reg.predict(X_poly)
   plt.plot(X_poly[:, 0], y_predict, d[i])

plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值