介绍
在这个项目中,你将学习如何在 Python 中实现普通最小二乘法(OLS)。OLS 是机器学习中使用的一种基本数学优化技术,特别是在线性回归问题中。
🎯 任务
在这个项目中,你将学习:
- 如何实现 OLS 函数,根据样本数据计算线性方程的斜率(w1)和截距(w0)。
- 如何使用样本数据测试 OLS 函数,并验证结果的正确性。
🏆 成果
完成这个项目后,你将能够:
- 推导计算线性方程斜率和截距的 OLS 公式。
- 在不使用任何外部库的情况下,在 Python 中实现 OLS 函数。
- 使用样本数据测试和验证 OLS 函数。
- 理解 OLS 方法在机器学习和线性回归问题中的重要性。
实现最小二乘法函数
在这一步中,你将在 Python 中实现普通最小二乘法(OLS)函数。按照以下步骤完成此步骤:
在文本编辑器中打开
least_squares.py文件。根据提供的规范实现
least_squares_function函数:- 该函数应接受两个输入参数:
x(样本 x 值的列表)和y(样本 y 值的列表)。 - 该函数应使用挑战描述中提供的 OLS 公式计算线性方程的斜率(
w1)和截距(w0)。 - 该函数应在返回之前将计算出的
w0和w1值四舍五入到两位小数。 - 该函数应以该顺序返回
w0和w1值。
- 该函数应接受两个输入参数:
以下是完整的 least_squares_function 实现:
def least_squares_function(x, y):
"""
参数:
x -- 样本 x 值的列表
y -- 样本 y 值的列表
返回:
w0 -- 线性方程参数,四舍五入到两位小数
w1 -- 线性方程参数,四舍五入到两位小数
"""
n = len(x)
## 计算斜率(w1)和截距(w0)所需的总和
sum_x = sum(x)
sum_y = sum(y)
sum_xy = sum(x_i * y_i for x_i, y_i in zip(x, y))
sum_x_squared = sum(x_i**2 for x_i in x)
## 使用 OLS 公式计算斜率(w1)和截距(w0)
w1 = (n * sum_xy - sum_x * sum_y) / (n * sum_x_squared - sum_x**2)
w0 = (sum_y - w1 * sum_x) / n
## 四舍五入到两位小数
w0 = round(w0, 2)
w1 = round(w1, 2)
return w0, w1
- 保存
least_squares.py文件。
测试最小二乘法函数
在这一步中,你将测试上一步中实现的 least_squares_function 函数。
- 你可以在文件末尾看到以下代码来测试
least_squares_function:
## 示例用法
if __name__ == "__main__":
x_example = [1, 2, 3, 4]
y_example = [4, 5, 6, 7]
result = least_squares_function(x_example, y_example)
print("w0:", result[0])
print("w1:", result[1])
- 在终端中运行
least_squares.py脚本:
python3 least_squares.py
你应该会看到以下输出:
w0: 3.0
w1: 1.0
此输出确认 least_squares_function 按预期工作。
恭喜!你已在 Python 中成功实现了普通最小二乘法函数。在接下来的步骤中,你可以探索如何在实际的机器学习问题中使用此函数。
总结
恭喜!你已完成此项目。你可以在 LabEx 中练习更多实验以提升你的技能。



