如何使用 Patsy 创建所有可能的公式组合以进行模型选择?
How to create all possible combinations of formulas using Patsy for model selection?
我目前正在使用 Python 的 Patsy 模块为我的模型创建矩阵输入。例如,我可能使用的公式是
'Survived ~ C(Pclass) + C(Sex) + C(honor) + C(tix) + Age + SibSp + ParCh + Fare + Embarked + vowel + middle + C(Title)'
但是,我想执行模型选择,所以我想从
的最简单模型创建所有可能的公式
'Survived ~ Age'
到最复杂的模型
'Survived ~ C(Pclass) * C(Sex) * C(honor) * C(tix) * Age * SibSp * ParCh * Fare * Embarked * vowel * middle * C(Title)'
Patsy 中是否有命令或某种方式可以生成所有可能的字符串组合?
这似乎是一个简单的字符串生成问题:
import itertools
survived = 'Survived'
operators = '+ - * / : **'.split()
factors = """C(Pclass) C(Sex) C(honor) C(tix) Age SibSp ParCh Fare Embarked vowel middle C(Title)""".split()
for l in range(1,len(factors)):
for fax in itertools.permutations(factors, l):
for ops in itertools.product(operators, repeat=(l-1)):
expr = [val for pair in itertools.zip_longest(fax, ops) for val in pair if val is not None]
print(survived, '~', ' '.join(expr))
我目前正在使用 Python 的 Patsy 模块为我的模型创建矩阵输入。例如,我可能使用的公式是
'Survived ~ C(Pclass) + C(Sex) + C(honor) + C(tix) + Age + SibSp + ParCh + Fare + Embarked + vowel + middle + C(Title)'
但是,我想执行模型选择,所以我想从
的最简单模型创建所有可能的公式'Survived ~ Age'
到最复杂的模型
'Survived ~ C(Pclass) * C(Sex) * C(honor) * C(tix) * Age * SibSp * ParCh * Fare * Embarked * vowel * middle * C(Title)'
Patsy 中是否有命令或某种方式可以生成所有可能的字符串组合?
这似乎是一个简单的字符串生成问题:
import itertools
survived = 'Survived'
operators = '+ - * / : **'.split()
factors = """C(Pclass) C(Sex) C(honor) C(tix) Age SibSp ParCh Fare Embarked vowel middle C(Title)""".split()
for l in range(1,len(factors)):
for fax in itertools.permutations(factors, l):
for ops in itertools.product(operators, repeat=(l-1)):
expr = [val for pair in itertools.zip_longest(fax, ops) for val in pair if val is not None]
print(survived, '~', ' '.join(expr))