📅  最后修改于: 2023-12-03 15:34:06.440000             🧑  作者: Mango
多项式回归是一种回归分析方法,用于建立因变量和自变量之间的非线性关系模型,模型的形式为多项式。
在Python中,我们可以使用scikit-learn库来实现多项式回归。本文将介绍如何使用scikit-learn库来实现多项式回归。
多项式回归的原理与线性回归类似,不同之处在于多项式回归的模型为多项式形式。
多项式回归的一般形式是:
$$ y = a_{0} + a_{1}x + a_{2}x^{2} + ... + a_{n}x^{n} + \epsilon $$
其中 $a_{i}$ 是多项式的系数,$\epsilon$ 是误差项。
通常,我们使用$X$表示自变量,使用$Y$表示因变量,多项式回归的目标是求出多项式系数,从而构建多项式回归模型,使得多项式回归模型能够尽可能地拟合数据。
我们首先生成一些样本数据,用于演示多项式回归的实现。
import numpy as np
import matplotlib.pyplot as plt
# 生成样本数据
np.random.seed(0)
n_samples = 30
X = np.sort(np.random.rand(n_samples))
y = np.sin(2 * np.pi * X) + np.random.randn(n_samples) * 0.1
# 绘制样本数据
plt.scatter(X, y)
plt.show()
运行上述代码,可以生成如下图所示的样本数据。
我们可以使用scikit-learn库中的LinearRegression
和PolynomialFeatures
类来构建多项式回归模型。
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
# 构建多项式特征
poly = PolynomialFeatures(degree=4)
X_poly = poly.fit_transform(X[:, np.newaxis])
# 构建多项式回归模型
model = LinearRegression()
model.fit(X_poly, y)
在上述代码中,我们首先使用PolynomialFeatures
类对自变量进行多项式转换,从而构建多项式特征$X_{poly}$。然后,使用LinearRegression
类对多项式特征$X_{poly}$和因变量$y$进行拟合。其中,degree
参数指定了多项式的次数,这里设置为4。
使用上述代码构建多项式回归模型后,就可以进行模型预测和可视化了。
# 在原始数据范围内生成预测值
X_test = np.linspace(0, 1, 100)
X_test_poly = poly.transform(X_test[:, np.newaxis])
y_pred = model.predict(X_test_poly)
# 绘制曲线和散点图
plt.scatter(X, y)
plt.plot(X_test, y_pred, 'r')
plt.show()
运行上述代码,可以生成如下图所示的多项式回归曲线。
可以看出,多项式回归模型成功地拟合了样本数据,并生成了一条能够很好地拟合数据的回归曲线。
本文介绍了如何使用Python和scikit-learn库来实现多项式回归。使用多项式回归模型可以更好地拟合非线性的数据分布,从而能够更好地解决实际问题。如果您对多项式回归感兴趣,可以进一步深入学习相关内容。