線形モデル = 0 + 1 × i + 2 × j + 3 × k + において、j,k ∈ [1,100] のどの値が最大の R-Squared を持つモデルになりますか?
データセットは、100 個の独立変数と 1 つの従属変数で構成されています。各変数には 50 個の観測値があります。
私の唯一の推測は、3 つの変数のすべての可能な組み合わせをループし、各組み合わせの R-2 乗を比較することです。私がPythonで行った方法は次のとおりです。
import itertools as itr
import pandas as pd
import time as t
from sklearn import linear_model as lm
start = t.time()
#linear regression model
LR = lm.LinearRegression()
#import data
data = pd.read_csv('csv_file')
#all possible combinations of three variables
combs = [comb for comb in itr.combinations(range(1, 101), 3)]
target = data.iloc[:,0]
hi_R2 = 0
for comb in combs:
variables = data.iloc[:, comb]
R2 = LR.fit(variables, target).score(variables, target)
if R2 > hi_R2:
hi_R2 = R2
indices = comb
end = t.time()
time = float((end-start)/60)
print 'Variables: {}\nR2 = {:.2f}\nTime: {:.1f} mins'.format(indices, hi_R2, time)
完了するまでに 4.3 分かかりました。この方法は、変数ごとに数千の観測値を持つデータセットには効率的ではないと思います。代わりにどのような方法を提案しますか?
ありがとうございました。