`statsmodels` を使った最小二乗法
最適化の細かな処理を毎回自分で書かなくてもよいように、複数の Python ライブラリは便利な高水準インターフェースを提供しています。
この演習では例として、statsmodels ライブラリを使い、最小二乗法(RSS の最小化)によるモデル構築を、より高レベルで汎用的なワークフローで行います。
開始しやすいように、x_data, y_data = load_data() で読み込んだデータを、df = pd.DataFrame(dict(x_column=x_data, y_column=y_data)) を用いて、列名を x_column と y_column にして pandas の DataFrame に保存してあります。
この演習はコースの一部です
Pythonで学ぶ線形モデリング入門
演習の手順
formula="y_column ~ x_column"、data=dfを指定してols()でモデルを作成し、.fit()で当てはめてください。model_fit.predict()を使ってy_modelを取得します。- 用意された関数
plot_data_with_model()を使い、y_dataにy_modelを重ねてプロットします。 model_fit.paramsからモデルパラメータa0とa1を取り出します。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)