【練習問題:cvxpy】線形回帰(重回帰分析)でハンドボール投げの飛距離を見積もる【python】
【はじめに】
前回はcvxpyの使い方をざっとまとめた。
今回はもう少し具体的な例を使って、『最小二乗法を使った線形回帰(重回帰分析)』を行ってみる。
【例題】:ハンドボール投げの飛距離
■サンプルデータ(15人分)
【解答例】
実行環境は「Google Colab」。
【1】cvxpyのインストール
!pip install cvxpy
!pip install --upgrade cvxpy
■バージョンや対応ソルバ情報を確認してみる
import cvxpy as cp
# バージョン確認
print(cp.__version__)
# 定義されているソルバーを出力してみる(settings.pyより)
print(cp.settings.SOLVERS)
■インストール済みのソルバーを確認する
cvxpyと一緒にインストールされるソルバーを確認してみる
print( cp.installed_solvers() )
【2】サンプルデータの用意
今回のサンプルデータは「pandas」の「DataFrame.from_dict()」を使って「DataFrame」として作成して取り扱う。
■サンプルデータの作成
import pandas as pd
# サンプルデータ
dict_sample_data = dict(
distance = [22, 36, 24, 22, 27, 29, 26, 23, 31, 24, 23, 27, 31, 25, 23],
power = [28, 46, 39, 25, 34, 29, 38, 23, 42, 27, 35, 39, 38, 32, 25],
height =[146, 169, 160, 156, 161, 168, 154, 153, 160, 152, 155, 154, 157, 162, 142],
weight =[34, 57, 48, 38, 47, 50, 54, 40, 62, 39, 46, 54, 57, 53, 32]
)
df_sample_data = pd.DataFrame.from_dict(dict_sample_data)
df_sample_data
【ここまでの実行結果例】
【3】計算用にoffset(切片)相当のデータを仕込む
前回と同様に連立方程式に相当する行列式をつくる。記述された数式に近い形で表現すると、例えば次のようにoffset分を加算する形にできる。
※数式の表現のままの場合
cvxpyならばこの数式表現を渡しても解析してくれるので、このまま進めても別にかまわない。
しかし、今回はもう少し扱いやすくするため「offset分も含めた行列」を作ることにする。
ここから先は
7,837字
/
7画像
¥ 100
もっと応援したいなと思っていただけた場合、よろしければサポートをおねがいします。いただいたサポートは活動費に使わせていただきます。