python实现最小二乘法通过Python实现最小二乘法的应用。 • 从某所高中随机抽取8个女生,测出她们的体重和身高如下表所示,现在来了一个60kg的女 生,根据表中数据,这位女生的身高会有多高呢,并画出拟合图
时间: 2024-10-05 09:01:16 浏览: 37
最小二乘法是一种统计学方法,用于估计线性模型的最佳参数,使得实际观测值与预测值之间的误差平方和最小。在Python中,我们可以利用`numpy`库来轻松实现这个过程。首先,你需要导入所需的库,并计算出身高与体重之间的线性关系。
假设有如下数据(这里数据并非真实抽样,仅为示例):
| 身高(cm) | 体重(kg) |
| --- | --- |
| 155 | 45 |
| 160 | 50 |
| 165 | 55 |
| 170 | 60 |
| 175 | 65 |
| 180 | 70 |
| 185 | 75 |
| 190 | 80 |
```python
import numpy as np
# 数据点
heights = [155, 160, 165, 170, 175, 180, 185, 190]
weights = [45, 50, 55, 60, 65, 70, 75, 80]
# 计算平均值
mean_height = np.mean(heights)
mean_weight = np.mean(weights)
# 标准化数据
heights_normalized = (heights - mean_height) / np.std(heights)
weights_normalized = (weights - mean_weight) / np.std(weights)
# 矩阵运算求解回归系数
A = np.vstack([heights_normalized, np.ones(len(heights))]).T
slope, intercept = np.linalg.lstsq(A, weights_normalized, rcond=None)[0]
# 预测新女生的身高(假设体重为60kg)
new_weight = 60
predicted_height = slope * new_weight + intercept
print(f"对于体重为60kg的女生,预计她的身高约为{predicted_height:.2f}cm")
# 可以用matplotlib等库绘制散点图和拟合线
import matplotlib.pyplot as plt
plt.scatter(heights, weights, label="原始数据")
plt.plot(np.arange(mean_height - 2 * np.std(heights), mean_height + 2 * np.std(heights)), slope * np.array(range(mean_height - 2 * np.std(heights), mean_height + 2 * np.std(heights))) + intercept, 'r', label="拟合直线")
plt.xlabel("身高(cm)")
plt.ylabel("体重(kg)")
plt.legend()
plt.show()
```
上述代码将计算身高和体重之间的最佳线性回归方程,并预测给定体重的新女生的身高。同时,它还生成了一个简单的散点图,展示了原始数据和拟合线的关系。
阅读全文