線形回帰フィッティングと描画

Machine LearningBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、一連のデータポイントに対して線形回帰を行い、Matplotlib を使って結果を可視化する方法を学びます。線形回帰は、従属変数(y)と 1 つ以上の独立変数(x)の間の関係をモデル化するために使用される基本的な機械学習技術です。

🎯 タスク

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

  • 操作を簡単にするために、与えられたデータを Numpy 配列に変換する方法
  • 線形回帰モデルの係数、すなわち傾き(w)と切片(b)を計算する方法
  • データポイントを散布図にプロットし、同じプロットに線形回帰直線を描画する方法

🏆 成果

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

  • 線形回帰分析用のデータを準備する
  • Numpy 関数を使って線形回帰パラメータを計算する
  • Matplotlib を使って散布図を作成し、線形回帰直線を重ねる
  • 線形回帰とそのデータ分析および可視化における実際の応用について、より深い理解を得る

データを NumPy 配列に変換する

このステップでは、操作を簡単にするために、与えられたデータを NumPy 配列に変換する方法を学びます。

linear_regression_plot.py ファイルを開きます。

linear_plot() 関数の最初にある data 変数を見つけます。

np.array() 関数を使って data リストを NumPy 配列に変換します。

data = np.array(data)

これで、data 変数は NumPy 配列になり、次のステップでの作業が簡単になります。

線形回帰パラメータを計算する

このステップでは、データから係数 w と切片 b の値をどのように計算するかを学びます。

linear_plot() 関数を続けて、NumPy 配列 data から xy の値を抽出します。

x = data[:, 0]
y = data[:, 1]

線形回帰パラメータ wb を計算するために np.polyfit() 関数を使用します。

w, b = np.polyfit(x, y, 1)

計算された wb の値を round() 関数を使って 2 桁の小数に丸めます。

w = round(w, 2)
b = round(b, 2)

これで、次のステップで使用する準備ができた係数 w と切片 b の値が得られました。

線形回帰直線を描画する

このステップでは、サンプルの散布図を描画し、計算されたパラメータに基づいてグラフ上にフィッティング直線を描画する方法を学びます。

linear_plot() 関数を続けて、plt.subplots() を使って新しい Matplotlib の図と軸を作成します。

fig, ax = plt.subplots()

ax.scatter() 関数を使ってデータポイントを描画します。

ax.scatter(x, y, label="Data Points")

ax.plot() 関数と計算された wb の値を使って線形回帰直線を描画します。

ax.plot(x, w * x + b, color="red", label=f"Linear Fit: y = {w}x + {b}")

プロットにラベルと凡例を追加します。

ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.legend()

最後に、wb、および fig オブジェクトの値を返します。

return w, b, fig

これで、linear_plot() 関数が完了しました。この関数は与えられたデータに対して線形回帰を行い、係数と Matplotlib のプロットオブジェクトを返します。

線形回帰の描画を実行する

この最後のステップでは、スクリプトを実行して線形回帰プロットを実際に見る方法を学びます。このコードの部分は、linear_plot() で先に定義された関数を使用して、散布図と線形回帰直線を表示します。

提供された Python のコードスニペットは、スクリプトがメインプログラムとして実行されているかどうかをチェックし、その場合、linear_plot() 関数を呼び出して結果のプロットを表示します。

if __name__ == "__main__":
    ## Call the linear_plot function to compute the regression parameters and generate the plot
    w, b, fig = linear_plot()
    ## Display the plot
    plt.show()

ここで、if __name__ == "__main__": は、スクリプトが直接実行されたときのみ linear_plot() 関数が呼び出されることを保証します。モジュールとしてインポートされたときには呼び出されません。linear_plot() を呼び出して、傾き w、切片 b、およびグラフオブジェクト fig を返した後、plt.show() を使用してウィンドウにプロットを表示します。これにより、回帰直線がデータにどのようにフィットしているかを視覚的に確認できます。

これで、linear_regression_plot.py の最初の行の上部にある「Run Cell」ボタンを押して結果を見ることができます。

Linear regression plot result

この設定では、異なるデータセットや回帰計算の調整でスクリプトを簡単に再実行して、即座に視覚的なフィードバックを得ることができます。

まとめ

おめでとうございます!このプロジェクトを完了しました。実験技術を向上させるために、LabEx でさらに多くの実験を行ってみましょう。

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