对于回归问题,我试图在df
df
的各列上尝试各种转换(log,exp,sqrt,** 2,自定义转换)。
如果A
包含B
,Y
和df
列,那么如何创建一个循环,以便我们对应用于所有可能的转换组合执行回归sm.ols(formula="Y ~ np.log(A) + B", data=df).fit()
sm.ols(formula="Y ~ np.log(A) + np.log(B)", data=df).fit()
sm.ols(formula="Y ~ np.log(A) + exp(B)", data=df).fit()
sm.ols(formula="Y ~ exp(A) + B", data=df).fit()
sm.ols(formula="Y ~ exp(A) + exp(B)", data=df).fit()
...
sm.ols(formula="transform1(Y) ~ transform1(A) + transform1(B)", data=df).fit()
的列?
例如:
{{1}}
答案 0 :(得分:1)
创建变量及其转换的列表,并使用itertools.combinations
创建2个元素的所有组合:
variables = [('A', 'np.log(A)', 'exp(A)'), ('B', 'np.log(B)', 'exp(B)')]
for combination in itertools.product(*variables):
sm.ols(formula="Y ~ {0} + {1}".format(combination[0], combination[1]) data=df).fit()