Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Patsy为模型选择创建所有可能的公式组合?_Python_Statsmodels_Patsy - Fatal编程技术网

Python 如何使用Patsy为模型选择创建所有可能的公式组合?

Python 如何使用Patsy为模型选择创建所有可能的公式组合?,python,statsmodels,patsy,Python,Statsmodels,Patsy,我目前正在使用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)

我目前正在使用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)'
到最复杂的模型

'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))

我不知道Patsy,但如果您指定创建有效公式字符串的规则,我可能会提供帮助。谢谢,这正是我想要的!