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

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

Python | 多项式回归的实现

多项式回归是一种回归分析方法,用于建立因变量和自变量之间的非线性关系模型,模型的形式为多项式。

在Python中,我们可以使用scikit-learn库来实现多项式回归。本文将介绍如何使用scikit-learn库来实现多项式回归。

环境要求
  • Python 3.x
  • NumPy
  • SciPy
  • scikit-learn
  • matplotlib
多项式回归的原理

多项式回归的原理与线性回归类似,不同之处在于多项式回归的模型为多项式形式。

多项式回归的一般形式是:

$$ 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()

运行上述代码,可以生成如下图所示的样本数据。

image-20211019153047353

构建多项式回归模型

我们可以使用scikit-learn库中的LinearRegressionPolynomialFeatures类来构建多项式回归模型。

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()

运行上述代码,可以生成如下图所示的多项式回归曲线。

image-20211019154957265

可以看出,多项式回归模型成功地拟合了样本数据,并生成了一条能够很好地拟合数据的回归曲线。

总结

本文介绍了如何使用Python和scikit-learn库来实现多项式回归。使用多项式回归模型可以更好地拟合非线性的数据分布,从而能够更好地解决实际问题。如果您对多项式回归感兴趣,可以进一步深入学习相关内容。