📜  使用 scikit-learn 库的多项式回归 - Python (1)

📅  最后修改于: 2023-12-03 14:49:46.345000             🧑  作者: Mango

使用 scikit-learn 库的多项式回归 - Python

在进行回归分析时,我们有时会发现线性回归不够准确,因此需要使用多项式回归。在 Python 中,可以使用 scikit-learn 库来实现多项式回归。

导入库

首先需要导入所需的库,包括 numpy、matplotlib 和 scikit-learn。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
生成数据

接下来,我们需要生成一些数据,用于训练和测试模型。我们可以使用 NumPy 中的 random 函数来生成随机数据。

# 生成随机数据
np.random.seed(0)
x = np.linspace(-3, 3, 100)
y = np.sin(x) + np.random.randn(100) * 0.1

# 绘制数据
plt.scatter(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.show()

散点图

生成多项式特征

接下来,我们需要生成多项式特征,并将其用于训练模型。我们可以使用 scikit-learn 中的 PolynomialFeatures 类来生成多项式特征。

# 生成多项式特征
poly_features = PolynomialFeatures(degree=3, include_bias=False)
X_poly = poly_features.fit_transform(x.reshape(-1, 1))

我们将选用三次多项式回归模型。

训练模型

接下来,我们需要训练模型,并将其用于预测。我们可以使用 scikit-learn 中的 LinearRegression 类来训练模型。

# 训练模型
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)
绘制预测结果

最后,我们可以使用训练好的模型来预测新数据,并绘制预测结果。

# 绘制预测结果
X = np.linspace(-3, 3, 100).reshape(-1, 1)
X_poly = poly_features.transform(X)
y_pred = lin_reg.predict(X_poly)

plt.plot(X, y_pred, 'r-', label='Predictions')
plt.scatter(x, y, label='Training Data')
plt.legend(loc='upper left')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

多项式回归

可以看到,使用多项式回归可以更好地拟合数据,相比于线性回归能够提高预测的准确度。