已知如下数据x=[1,2,3,4,5,6,7,8,9,10]y=[3,5,7,9,11,13,15,17,19,21]请使用sklearn中最小二乘法拟f(x)函数,并计算mse与R²
时间: 2024-10-23 07:05:33 浏览: 20
数据拟合-Matlab数据拟合
首先,为了使用Python的scikit-learn库进行最小二乘法线性回归并计算均方误差(MSE)和决定系数(R²),我们需要按照以下步骤操作:
1. 导入所需的库:
```python
from sklearn.linear_model import LinearRegression
import numpy as np
```
2. 定义输入特征 `X` 和目标变量 `y`。在这种情况下,我们可以直接将 `x` 作为一维数组传递,因为它们都是数值型数据:
```python
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([3, 5, 7, 9, 11, 13, 15, 17, 19, 21])
```
3. 创建线性回归模型并拟合数据:
```python
model = LinearRegression()
model.fit(x.reshape(-1, 1), y)
```
4. 预测值 `y_pred`:
```python
y_pred = model.predict(x.reshape(-1, 1))
```
5. 计算均方误差 (MSE):
```python
mse = np.mean((y - y_pred) ** 2)
```
6. 计算决定系数 (R²):
```python
r2 = model.score(x.reshape(-1, 1), y)
```
现在,你可以将上述代码放入一个函数中,以便重复使用。完整的代码示例如下:
```python
def calculate_metrics(x, y):
# ... (之前的步骤)
mse = np.mean((y - y_pred) ** 2)
r2 = model.score(x.reshape(-1, 1), y)
return mse, r2
mse, r2 = calculate_metrics(x, y)
print(f"均方误差 (MSE): {mse}")
print(f"决定系数 (R²): {r2}")
阅读全文