始める無料で始める

`statsmodels` を使った最小二乗法

最適化の細かな処理を毎回自分で書かなくてもよいように、複数の Python ライブラリは便利な高水準インターフェースを提供しています。

この演習では例として、statsmodels ライブラリを使い、最小二乗法(RSS の最小化)によるモデル構築を、より高レベルで汎用的なワークフローで行います。

開始しやすいように、x_data, y_data = load_data() で読み込んだデータを、df = pd.DataFrame(dict(x_column=x_data, y_column=y_data)) を用いて、列名を x_columny_column にして pandas の DataFrame に保存してあります。

この演習はコースの一部です

Pythonで学ぶ線形モデリング入門

コースを見る

演習の手順

  • formula="y_column ~ x_column"data=df を指定して ols() でモデルを作成し、.fit() で当てはめてください。
  • model_fit.predict() を使って y_model を取得します。
  • 用意された関数 plot_data_with_model() を使い、y_datay_model を重ねてプロットします。
  • model_fit.params からモデルパラメータ a0a1 を取り出します。
  • compute_rss_and_plot_fit() を使い、これらの結果が、numpy で実装した解析的な式と整合していることを確認してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Pass data and `formula` into ols(), use and `.fit()` the model to the data
model_fit = ols(____="y_column ~ x_column", ____=df).____()

# Use .predict(df) to get y_model values, then over-plot y_data with y_model
y_model = model_fit.____(df)
fig = plot_data_with_model(x_data, ____, ____)

# Extract the a0, a1 values from model_fit.params
a0 = model_fit.____['Intercept']
a1 = model_fit.____['x_column']

# Visually verify that these parameters a0, a1 give the minimum RSS
fig, rss = compute_rss_and_plot_fit(a0, a1)
コードを編集して実行