用最小二乘法对身高和体重进行预测(简单线性回归),并用matplotlib画出拟合曲线。 体重数据:[48, 64, 53, 66, 52, 68, 50, 52, 64, 49]) 身高数据:[162, 165, 159, 173, 157, 175, 161, 164, 172, 158]
时间: 2023-07-02 18:16:13 浏览: 305
好的,我们可以使用最小二乘法对身高和体重之间的关系进行拟合。以下是代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
# 体重数据
x = np.array([48, 64, 53, 66, 52, 68, 50, 52, 64, 49])
# 身高数据
y = np.array([162, 165, 159, 173, 157, 175, 161, 164, 172, 158])
# 求均值
x_mean = np.mean(x)
y_mean = np.mean(y)
# 求解回归系数
numerator = 0 # 分子
denominator = 0 # 分母
for i in range(len(x)):
numerator += (x[i] - x_mean) * (y[i] - y_mean)
denominator += (x[i] - x_mean) ** 2
beta = numerator / denominator # 回归系数
alpha = y_mean - beta * x_mean # 截距
# 画出拟合曲线
x_fit = np.linspace(np.min(x), np.max(x), 100) # 用于绘制拟合曲线的x坐标
y_fit = alpha + beta * x_fit # 对应的y坐标
# 画出散点图和拟合曲线
plt.scatter(x, y)
plt.plot(x_fit, y_fit, 'r')
plt.xlabel('Weight (kg)')
plt.ylabel('Height (cm)')
plt.title('Weight and Height Regression')
plt.show()
```
首先,我们将体重和身高数据分别存储在numpy数组x和y中。然后,我们求出体重和身高的均值x_mean和y_mean。接下来,我们使用最小二乘法求解回归系数。
回归系数beta表示体重对身高的影响程度,回归系数越大,体重和身高之间的关系越密切。截距alpha表示当体重为0时,身高的值。在这里,我们使用最小二乘法求解回归系数的公式为:
$$\beta = \frac{\sum_{i=1}^n(x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^n(x_i - \bar{x})^2}$$
$$\alpha = \bar{y} - \beta \bar{x}$$
最后,我们使用matplotlib库中的scatter和plot函数分别画出散点图和拟合曲线,并设置横纵坐标的标签和标题。运行上述代码,即可得到拟合曲线。
阅读全文