在線性模型= 0 + 1×i + 2×j + 3×k +, 中,j,k∈[1,100]的結果是R模型的最高值?蠻力是使用Python進行多元迴歸的最佳選擇嗎?
該數據集由100個獨立變量和一個因變量組成。每個變量有50個觀測值。
我唯一的猜測是循環所有可能的三個變量的組合,並比較每個組合的R平方。我用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分鐘完成。我認爲這種方法對於每個變量具有數千個觀察值的數據集是無效的。你會建議什麼方法?
謝謝。
你的意思是最低的MSE?再加上這個問題是Code Review的問題,因爲你的代碼確實運行了,而且你正在努力提高它的效率。請將它發佈在那裏(http://codereview.stackexchange.com/questions/tagged/python) –
它也可能是http://stats.stackexchange.com的問題,因爲它是一個與Python無關的常見問題。尋找「預測選擇」或這個維基百科文章:https://en.wikipedia.org/wiki/Stepwise_regression作爲一個「解決方案」的例子。 – StefanS
Ev。 Kounis,我正在尋找三個最能解釋目標變化的變量。爲了達到這個目的,我希望MSE爲什麼比R-squared更好。感謝您在Code Review中發佈此問題的建議。我應該在這裏刪除這個問題嗎? StefanS,謝謝你的鏈接到逐步迴歸。 – antdro