Python における最小二乗法

PythonBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、Python で最小二乗法(OLS: Ordinary Least Squares)を実装する方法を学びます。OLS は、機械学習、特に線形回帰問題で使用される基本的な数学的最適化手法です。

🎯 タスク

このプロジェクトでは、以下を学びます。

  • サンプルデータに基づいて線形方程式の傾き (w1) と切片 (w0) を計算するための OLS 関数を実装する方法。
  • サンプルデータを使って OLS 関数をテストし、結果の正確性を検証する方法。

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • 線形方程式の傾きと切片を計算するための OLS の公式を導出する。
  • 外部ライブラリを一切使用せずに Python で OLS 関数を実装する。
  • サンプルデータを使って OLS 関数をテストし、検証する。
  • 機械学習および線形回帰問題における OLS 手法の重要性を理解する。

最小二乗法関数を実装する

このステップでは、Python で最小二乗法(OLS: Ordinary Least Squares)関数を実装します。以下の手順に従ってこのステップを完了しましょう。

  1. テキストエディタで least_squares.py ファイルを開きます。

  2. 提供された仕様に従って least_squares_function 関数を実装します。

    • 関数は 2 つの入力パラメータを取る必要があります。x(サンプル x 値のリスト)と y(サンプル y 値のリスト)。
    • 関数は、チャレンジの説明に記載されている OLS の公式を使用して、線形方程式の傾き (w1) と切片 (w0) を計算する必要があります。
    • 関数は、計算された w0w1 の値を 2 桁の小数に丸めてから返す必要があります。
    • 関数は、その順序で w0w1 の値を返す必要があります。

以下は、完成した least_squares_function の実装です。

def least_squares_function(x, y):
    """
    Parameters:
    x -- list of values of sample x
    y -- list of values of sample y

    Returns:
    w0 -- linear equation parameter, rounded to two decimal places
    w1 -- linear equation parameter, rounded to two decimal places
    """

    n = len(x)

    ## Calculate the sums needed for the slope (w1) and intercept (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)

    ## Calculate the slope (w1) and intercept (w0) using the OLS formulas
    w1 = (n * sum_xy - sum_x * sum_y) / (n * sum_x_squared - sum_x**2)
    w0 = (sum_y - w1 * sum_x) / n

    ## Round to two decimal places
    w0 = round(w0, 2)
    w1 = round(w1, 2)

    return w0, w1
  1. least_squares.py ファイルを保存します。

最小二乗法関数をテストする

このステップでは、前のステップで実装した least_squares_function をテストします。

  1. least_squares_function をテストするために、ファイルの末尾に次のコードがあります。
## Example usage
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 でさらに多くの実験を行って練習することができます。

✨ 解答を確認して練習✨ 解答を確認して練習