現在以下のようなコードがあります。
解決したい点は、以下のy0~y6といった6つの従属変数ベクトルに対する回帰分析結果(平均二乗誤差)を一度に繰り返し処理により計算するプログラムを作りたいというものです。あまり一つの回帰モデルで、複数の従属変数になり得る数値があるケースは少ないと思いますが、本件ではそのようなケースとなっています。
まず準備プロセスです。念のために掲載します。
Python
1%matplotlib inline 2import matplotlib.pyplot as plt 3import numpy as np 4import pandas as pd 5from sklearn.linear_model import LinearRegression 6from sklearn.preprocessing import StandardScaler 7from sklearn.model_selection import train_test_split 8from sklearn.metrics import mean_squared_error 9from sklearn.preprocessing import PolynomialFeatures 10 11data=pd.read_excel('元データ.xlsx') 12data=data.drop([0,1]).reset_index(drop=True) 13data['date']=pd.to_datetime(data['date'],format='%Y年%m月') 14data['POSIX']=data['date'].astype('int64').values//10**9 15data['year']=data['date'].dt.year 16data['month']=data['date'].dt.month 17#上記の数行は、データを取得してからデータを簡単に整形しているのみです。 18 19x=data.iloc[:38,[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,32]] #特徴量は23個 20y0=data.iloc[:38,[23]] #0-43 21y1=data.iloc[:38,[24]]#0-42 22y2=data.iloc[:38,[25]]#0-41 23y3=data.iloc[:38,[26]]#0-40 24y4=data.iloc[:38,[27]]#0-39 25y5=data.iloc[:38,[28]]#0-38 26y6=data.iloc[:38,[29]]#0-37
上記は準備プロセスです。ここから実際の計算が始まります。
問題は以下の実際の回帰の計算です。現状は以下の「y0」となっているものを、毎回「y1」に全て変えた上で誤差スコア計算し書き留める、
その後「y2」に全て変えた上で・・・との繰り返しです。一気にy0~y6までの7通りの従属変数による誤差スコアを一気に出す方法を考えているのですが、
どうも繰り返し構文を用いてもうまくいきません。詳しい方、助けていただけませんでしょうか?
Python
1x_pos=data['POSIX'].values 2N=len(x) 3N_train=round(len(x)*0.8) 4N_test=N-N_train 5 6x_pos_train,x_pos_test=x_pos[:N_train],x_pos[N_train:] 7x_train,y0_train=x[:N_train],y0[:N_train] 8x_test,y0_test=x[N_train:],y0[N_train:] 9 10POLY=PolynomialFeatures(degree=2,include_bias=False)#13の特徴量を2次の多項式に変換 11x_train_pol=POLY.fit_transform(x_train) 12x_test_pol=POLY.transform(x_test) 13sc=StandardScaler()#特徴料の標準化を行う 14x_train_std=sc.fit_transform(x_train_pol) 15x_test_std=sc.transform(x_test_pol) 16 17model=LinearRegression() 18model.fit(x_train_std,y0_train) 19 20y_train_pred=model.predict(x_train_std) 21y_test_pred=model.predict(x_test_std) 22mean_squared_error(y0_train,y_train_pred),mean_squared_error(y0_test,y_test_pred) 23
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/01 01:06 編集