Python 中的普通最小二乘法

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何在 Python 中实现普通最小二乘法(OLS)。OLS 是机器学习中使用的一种基本数学优化技术,特别是在线性回归问题中。

🎯 任务

在这个项目中,你将学习:

  • 如何实现 OLS 函数,根据样本数据计算线性方程的斜率(w1)和截距(w0)。
  • 如何使用样本数据测试 OLS 函数,并验证结果的正确性。

🏆 成果

完成这个项目后,你将能够:

  • 推导计算线性方程斜率和截距的 OLS 公式。
  • 在不使用任何外部库的情况下,在 Python 中实现 OLS 函数。
  • 使用样本数据测试和验证 OLS 函数。
  • 理解 OLS 方法在机器学习和线性回归问题中的重要性。

实现最小二乘法函数

在这一步中,你将在 Python 中实现普通最小二乘法(OLS)函数。按照以下步骤完成此步骤:

  1. 在文本编辑器中打开 least_squares.py 文件。

  2. 根据提供的规范实现 least_squares_function 函数:

    • 该函数应接受两个输入参数:x(样本 x 值的列表)和 y(样本 y 值的列表)。
    • 该函数应使用挑战描述中提供的 OLS 公式计算线性方程的斜率(w1)和截距(w0)。
    • 该函数应在返回之前将计算出的 w0w1 值四舍五入到两位小数。
    • 该函数应以该顺序返回 w0w1 值。

以下是完整的 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
  1. 保存 least_squares.py 文件。
✨ 查看解决方案并练习

测试最小二乘法函数

在这一步中,你将测试上一步中实现的 least_squares_function 函数。

  1. 你可以在文件末尾看到以下代码来测试 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])
  1. 在终端中运行 least_squares.py 脚本:
python3 least_squares.py

你应该会看到以下输出:

w0: 3.0
w1: 1.0

此输出确认 least_squares_function 按预期工作。

恭喜!你已在 Python 中成功实现了普通最小二乘法函数。在接下来的步骤中,你可以探索如何在实际的机器学习问题中使用此函数。

✨ 查看解决方案并练习

总结

恭喜!你已完成此项目。你可以在 LabEx 中练习更多实验以提升你的技能。