Python中的多项式回归实例
1. 什么是多项式回归?
多项式回归是一种用于拟合数据的回归分析方法,它通过使用多项式函数来逼近观测数据的真实关系。与线性回归不同,多项式回归可以拟合非线性模型,因此在一些实际问题中应用广泛。
2. 多项式回归的实现
2.1 模块导入
在Python中,使用scikit-learn库中的PolynomialFeatures和LinearRegression类可以方便地进行多项式回归分析。需要先导入相关模块,如下所示:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
2.2 生成数据
我们可以使用numpy.random模块生成一个数据集。下面的代码将生成一个带有正态分布噪声的二次函数:
np.random.seed(0)
x = 2 - 3 * np.random.normal(0, 1, 20)
y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)
2.3 多项式回归拟合
接下来,我们使用PolynomialFeatures和LinearRegression类拟合数据。首先定义一个多项式特征生成器对象,然后将原始的x值转换成一组多项式特征,并将特征和y值用LinearRegression类进行拟合,如下所示:
# 转换x的形状
x = x[:, np.newaxis]
# 定义多项式特征生成器对象
poly = PolynomialFeatures(degree=3, include_bias=False)
x_poly = poly.fit_transform(x)
# 定义线性回归对象
linear = LinearRegression()
linear.fit(x_poly, y)
# 预测并绘制图像
y_pred = linear.predict(x_poly)
plt.scatter(x, y, s=10)
plt.plot(x, y_pred, color='r')
plt.show()
运行上述代码后,我们可以得到拟合结果的图像。通过观察图像,我们可以发现多项式回归的效果比较好,可以较好地拟合真实的非线性关系。
2.4 模型评估
为了评估我们的模型,我们可以使用mean_squared_error(均方误差)将预测值与真实值进行比较。下面的代码将计算模型的均方误差,并将结果输出到控制台中:
from sklearn.metrics import mean_squared_error
# 计算均方误差
mse = mean_squared_error(y, y_pred)
print(mse)
经过计算,模型的均方误差为 26.143063728054918。由于均方误差是一种量度预测值与真实值之间的误差的方法,因此可以用来评估模型的准确性。我们可以发现均方误差比较大,这可能是由于噪声的存在以及偏离真实线性关系的点影响的结果。
3. 总结
本文介绍了Python中的多项式回归的实现方法,并使用生成的数据进行了实验。通过实验结果,我们可以得到一个比较好的拟合模型,并评估了模型的准确性。在实际应用中,我们可以根据需要选择不同的多项式特征生成器对象,以获得更好的拟合效果。