给定一组含噪声的数据点,使用Python的线性回归库来拟合一个多项式回归模型,并预测当 `x = 9` 时的 `y` 值。
时间: 2024-10-19 17:07:33 浏览: 33
Python数据拟合与广义线性回归算法学习
首先,你需要安装一些必要的Python库,如`numpy`, `pandas`, 和 `sklearn`(scikit-learn)。多项式回归是通过线性回归库进行拟合,但是我们通常会使用`PolynomialFeatures`类从`sklearn.preprocessing`模块进行特征转换,然后使用`LinearRegression`来进行回归。
这是一个步骤-by-step 的例子:
```python
import numpy as np
import pandas as pd
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 创建模拟数据 (包含噪声)
np.random.seed(0)
n_samples = 100
x = np.linspace(-3, 3, n_samples)
y = 2 * x ** 2 + 3 * x + 4 + np.random.normal(0, 1, size=n_samples)
# 将数据转换成DataFrame以便处理
df = pd.DataFrame({'x': x, 'y': y})
# 拟合多项式回归模型
degree = 2 # 这里选择二次多项式
poly_features = PolynomialFeatures(degree=degree)
X_poly = poly_features.fit_transform(df['x'].values.reshape(-1, 1))
# 初始化并训练模型
model = LinearRegression()
model.fit(X_poly, df['y'])
# 预测 x = 9 时的 y 值
x_new = np.array([[9]])
y_pred = model.predict(x_new)
print(f"当 x = 9 时,预测的 y 值为: {y_pred[0]}")
# 可视化原始数据和拟合的曲线
import matplotlib.pyplot as plt
plt.scatter(df['x'], df['y'])
plt.plot(x, model.predict(poly_features.transform(x.reshape(-1, 1))), color='red')
plt.show()
# 测试模型性能
y_test = df['y']
y_pred = model.predict(X_poly)
mse = mean_squared_error(y_test, y_pred)
print("均方误差(MSE):", mse)
```
在这个代码中,我们首先创建了一个模拟数据集,然后使用多项式特征转换将其转换为线性可预测的形式。接着我们训练模型并在 `x = 9` 时进行预测。
阅读全文