📜  Python | 多项式回归的实现(1)

📅  最后修改于: 2023-12-03 15:34:06.352000             🧑  作者: Mango

Python | 多项式回归的实现

介绍

多项式回归是一种非线性回归方法,通过将特征的多项式加入到线性模型中来拟合数据。它在解决非线性问题方面非常有用。

本文将介绍使用Python实现多项式回归的方法,并通过一个实例来说明。

实现

我们将使用Scikit-Learn库实现多项式回归。首先我们需要先导入所需的库:

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

然后,我们定义一个简单的数据集:

x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([2, 4, 5, 4, 5, 6, 7, 8, 9, 9])

接着,我们需要将特征与响应变量转换为二维数组的格式:

x = x[:, np.newaxis]
y = y[:, np.newaxis]

现在,我们可以定义一个多项式特征对象,通过指定degree参数为2,则创建了一个二次多项式特征:

poly_features = PolynomialFeatures(degree=2)

接着,我们需要将数据转换为多项式特征:

x_poly = poly_features.fit_transform(x)

然后,我们需要定义一个线性回归对象,并使用多项式特征向量x_poly来训练它:

model = LinearRegression()
model.fit(x_poly, y)

这里定义的模型将使用多项式特征向量x_poly预测响应变量y。我们可以通过模型的predict方法得到预测值:

y_pred = model.predict(x_poly)

最后,我们可以通过可视化来比较原始数据和拟合的曲线:

import matplotlib.pyplot as plt

plt.scatter(x, y, s=10)
plt.plot(x, y_pred, color='r')
plt.show()
示例

我们来看一个示例,数据集的特征变量为车速,响应变量为刹车距离:

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

# 定义数据集
speed = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
distance = np.array([2, 4, 5, 4, 5, 6, 7, 8, 9, 9])

# 转换为二维数组
speed = speed[:, np.newaxis]
distance = distance[:, np.newaxis]

# 定义二次多项式特征
poly_features = PolynomialFeatures(degree=2)

# 转换为多项式特征
speed_poly = poly_features.fit_transform(speed)

# 定义线性回归模型
model = LinearRegression()

# 训练模型
model.fit(speed_poly, distance)

# 预测值
distance_pred = model.predict(speed_poly)

# 可视化结果
plt.scatter(speed, distance, s=10)
plt.plot(speed, distance_pred, color='r')
plt.show()

结果图如下所示:

Polynomial Regression Example

总结

在本文中,我们介绍了使用Python实现多项式回归的方法。使用Scikit-Learn库的PolynomialFeatures类和LinearRegression类,我们可以轻松地拟合数据与预测目标变量。