回归分析(三)——多项式回归解决非线性问题

本文探讨了如何通过多项式回归来处理线性回归模型假设不成立的情况,介绍了使用sklearn库实现多项式回归的步骤,并通过housing data展示了二项式、多项式与线性模型的效果对比。实验表明,尽管多项式回归能提高模型拟合度,但过高的多项式阶数可能导致过拟合。此外,还提到了用log转换解决非线性问题的方法。
摘要由CSDN通过智能技术生成

git源码:https://github.com/xuman-Amy/Regression-Analysis

【将线性回归模型转换为曲线——多项式回归】

之前都是将解释变量和目标值之间的关系假设为线性的,如果假设不成立,可以添加多项式选项,转换为多项式回归。

【sklearn实现多项式回归】

1、PoltnomialFeatures实现二项回归

# quadratic  二项回归
from sklearn.preprocessing import PolynomialFeatures
X = np.array([258.0, 270.0, 294.0, 
              320.0, 342.0, 368.0, 
              396.0, 446.0, 480.0, 586.0])\
             [:, np.newaxis]


y = np.array([236.4, 234.4, 252.8, 
              298.6, 314.2, 342.2, 
              360.8, 368.0, 391.2,
              390.8])
lr = LinearRegression()
pr = LinearRegression()
quadratic = PolynomialFeatures(degree=2) #二项式
X_quad = quadratic.fit_transform(X)

2、建立线性回归模型便于对比

# fit linear features
lr.fit(X, y)
X_fit = np.arange(250, 600, 10)[:, np.newaxis]
y_lin_fit = lr.predict(X_fit)

3、为多项式回归的transform特征fit 一个多变量回归模型


                
多项式回归是线性回归的一种扩展,它允许模型更复杂的关系,如曲线。在Python中,多项式回归可以通过`numpy`库或`scikit-learn`库来实现。下面是一个简单的多项式回归实现的示例代码。 首先,你需要安装`scikit-learn`库(如果尚未安装): ```bash pip install scikit-learn ``` 然后,你可以使用以下Python代码: ```python import numpy as np from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures from sklearn.pipeline import make_pipeline # 假设我们有一些数据点 # X是一个二维数组,每一行代表一个样本,每一列代表一个特征 # y是一个一维数组,包含每个样本的目标值 X = np.array([[1], [2], [3], [4], [5]]) y = np.array([1, 4, 9, 16, 25]) # 创建一个多项式回归模型,这里我们设置degree=2来实现二次多项式回归 degree = 2 model = make_pipeline(PolynomialFeatures(degree), LinearRegression()) # 训练模型 model.fit(X, y) # 现在模型已经训练好了,可以用来预测新的数据点 X_new = np.array([[6], [7]]) y_new = model.predict(X_new) print("预测的结果:", y_new) ``` 这段代码首先导入了必要的模块,然后创建了一些样本数据`X`和对应的目标值`y`。接下来,它创建了一个多项式回归模型,该模型通过`PolynomialFeatures`和`LinearRegression`组合而成,其中`PolynomialFeatures(degree)`用于生成多项式特征,`LinearRegression`用于拟合线性模型。接着,使用`.fit()`方法训练模型,并使用训练好的模型进行预测。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值