欢迎访问宙启技术站
智能推送

利用Sklearn实现多项式回归

发布时间:2024-01-15 11:04:35

在机器学习中,多项式回归是一种对数据进行拟合的方法,它通过增加多项式的次数来扩展模型的复杂度。在sklearn库中,可以使用PolynomialFeatures类来实现多项式回归。下面将介绍如何使用sklearn实现多项式回归,并附上一个使用例子。

首先,我们需要导入必要的库和模块:

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

接下来,我们可以创建一个简单的数据集,作为我们的例子。在这个例子中,我们将使用一个二次多项式生成一些随机数据点,并加入一些噪声。

# 创建随机数据点
np.random.seed(0)
X = 6 * np.random.rand(100, 1) - 3
y = 0.5 * X**2 + X + 2 + np.random.randn(100, 1)

然后,我们可以使用PolynomialFeatures类来转换我们的特征矩阵X。通过设置degree参数,我们可以选择多项式的次数。在这个例子中,我们将使用二次多项式。

# 转换特征矩阵
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_features.fit_transform(X)

之后,我们可以使用线性回归模型来拟合我们的数据。

# 拟合数据
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)

拟合完成后,我们可以通过使用模型的coef_属性来查看回归模型的系数。

# 查看系数
print(lin_reg.coef_)

最后,我们可以使用模型来进行预测,然后计算预测结果与真实值之间的均方误差(Mean Squared Error)。

# 进行预测
y_pred = lin_reg.predict(X_poly)

# 计算均方误差
mse = mean_squared_error(y, y_pred)
print(mse)

完整的代码如下:

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

# 创建随机数据点
np.random.seed(0)
X = 6 * np.random.rand(100, 1) - 3
y = 0.5 * X**2 + X + 2 + np.random.randn(100, 1)

# 转换特征矩阵
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_features.fit_transform(X)

# 拟合数据
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)

# 查看系数
print(lin_reg.coef_)

# 进行预测
y_pred = lin_reg.predict(X_poly)

# 计算均方误差
mse = mean_squared_error(y, y_pred)
print(mse)

通过这个例子,我们可以看到如何使用sklearn中的PolynomialFeatures类来实现多项式回归,并使用LinearRegression类进行拟合和预测。同时,我们还可以使用mean_squared_error函数计算预测结果的均方误差。

总结起来,sklearn提供了简单易用的多项式回归工具,可以帮助我们快速实现多项式回归,并进行模型评估。这对于探索数据模式和进行复杂性分析非常有用。