Python中的多项式回归实例

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中的多项式回归的实现方法,并使用生成的数据进行了实验。通过实验结果,我们可以得到一个比较好的拟合模型,并评估了模型的准确性。在实际应用中,我们可以根据需要选择不同的多项式特征生成器对象,以获得更好的拟合效果。

后端开发标签