重回帰分析の構築
メニューを表示するにはスワイプしてください
OLS クラスは、単回帰分析と同様に重回帰分析を構築することが可能です。しかし、残念ながら np.polyfit() 関数は複数の特徴量には対応していません。
ここでは OLS クラスを使用します。
X̃ 行列の構築
単回帰分析の例と同じデータセットを使用しますが、今回は母親の身長が2つ目の特徴量として追加されています。データを読み込み、X 変数を確認します。
123456789import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] print(X.head())
OLS(y, X_tilde) を使用して OLS オブジェクトを初期化する必要があることに注意。ご覧の通り、X 変数にはすでに 2 つの特徴量が別々の列として含まれている。そのため、X_tilde を得るには、最初の列として 1 を追加するだけでよい。sm.add_constant(X) 関数はまさにそれを実行する。
123# Create X_tilde X_tilde = sm.add_constant(X) print(X_tilde.head())
パラメータの求め方
素晴らしいです!これでモデルを構築し、パラメータを求め、前のセクションと同じ方法で予測を行うことができます。
12345678910111213141516import numpy as np # Initialize an OLS object regression_model = sm.OLS(y, X_tilde) # Train the object regression_model = regression_model.fit() # Get the paramters beta_0, beta_1, beta_2 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1) print('beta_2 is: ', beta_2) # Predict new values X_new = np.array([[65, 62],[70, 65],[75, 70]]) # Feature values of new instances X_new_tilde = sm.add_constant(X_new) # Preprocess X_new y_pred = regression_model.predict(X_new_tilde) # Predict the target print('Predictions:', y_pred)
注意
今回のトレーニングセットには2つの特徴量があるため、予測したい各新しいインスタンスにも2つの特徴量を指定する必要があります。そのため、上記の例では np.array([[65, 62],[70, 65],[75, 70]]) が使用されています。これは3つの新しいインスタンス y, [Father:65,Mother:62], [Father:70, Mother:65] に対して [Father:75, Mother:70] を予測しています。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 2. 章 3