任务三:应用最小二乘法实现对奥运比赛数据的线性回归。 计算 w0=? w1=? 然后,在一个图中同时画出样本点和模型直线。使用spyder
时间: 2024-12-03 08:31:19 浏览: 12
为了在Python中使用最小二乘法进行线性回归分析并创建图形,我们可以使用NumPy和Matplotlib库。这里是一个简单的步骤:
首先,假设我们已经有一个包含奥运会比赛数据的Pandas DataFrame,其中至少有两个变量:比如`time`(秒)和`distance`(米),我们将预测距离依赖于时间。
1. **导入所需库**:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression # 用于最小二乘法
```
2. **加载和准备数据**:
```python
data = pd.read_csv('olympic_data.csv') # 假设csv文件名为olympic_data.csv
X = data['time'].values.reshape(-1, 1) # 时间列作为输入特征
y = data['distance'] # 成绩作为目标变量
```
3. **线性回归模型**:
```python
model = LinearRegression()
model.fit(X, y)
w0 = model.intercept_ # 回归直线的截距
w1 = model.coef_[0] # 回归直线的斜率
print(f"Intercept: {w0:.2f}")
print(f"Slope: {w1:.2f}")
```
4. **绘制数据和模型直线**:
```python
plt.figure(figsize=(8,6))
plt.scatter(X, y, label='Sample Points', color='blue')
plt.plot(X, w0 + w1 * X, 'r', linewidth=2, label='Linear Regression Line')
# 添加标题和轴标签
plt.title('Linear Regression on Olympic Data')
plt.xlabel('Time (seconds)')
plt.ylabel('Distance (meters)')
plt.legend()
plt.grid(True)
plt.show()
```
在这个例子中,`w0`是回归直线与Y轴交点的y坐标,`w1`则是每增加一秒时间对应的平均增加距离。图形会显示出样本点以及由回归模型拟合的直线。
阅读全文