3

線形モデル = 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 分かかりました。この方法は、変数ごとに数千の観測値を持つデータセットには効率的ではないと思います。代わりにどのような方法を提案しますか?

ありがとうございました。

4

1 に答える 1