📅  最后修改于: 2023-12-03 15:34:06.352000             🧑  作者: Mango
多项式回归是一种非线性回归方法,通过将特征的多项式加入到线性模型中来拟合数据。它在解决非线性问题方面非常有用。
本文将介绍使用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()
结果图如下所示:
在本文中,我们介绍了使用Python实现多项式回归的方法。使用Scikit-Learn库的PolynomialFeatures类和LinearRegression类,我们可以轻松地拟合数据与预测目标变量。