Bha*_*ika 14 python python-3.x statsmodels
我想使用logit模型并尝试导入statsmodels库。我的版本:Python 3.6.8
我得到的最好建议是降级scipy,但不清楚如何降级到哪个版本。请帮助解决。 https://github.com/statsmodels/statsmodels/issues/5747
import statsmodels.formula.api as smf
ImportError Traceback (most recent call last)
<ipython-input-52-f897a2d817de> in <module>
----> 1 import statsmodels.formula.api as smf
~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/formula/api.py in <module>
13 from statsmodels.robust.robust_linear_model import RLM
14 rlm = RLM.from_formula
---> 15 from statsmodels.discrete.discrete_model import MNLogit
16 mnlogit = MNLogit.from_formula
17 from statsmodels.discrete.discrete_model import Logit
~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/discrete/discrete_model.py in <module>
43
44 from statsmodels.base.l1_slsqp import fit_l1_slsqp
---> 45 from statsmodels.distributions import genpoisson_p
46
47 try:
~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/distributions/__init__.py in <module>
1 from .empirical_distribution import ECDF, monotone_fn_inverter, StepFunction
----> 2 from .edgeworth import ExpandedNormal
3 from .discrete import genpoisson_p, zipoisson, zigenpoisson, zinegbin
~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/distributions/edgeworth.py in <module>
5 import numpy as np
6 from numpy.polynomial.hermite_e import HermiteE
----> 7 from scipy.misc import factorial
8 from scipy.stats import rv_continuous
9 import scipy.special as special
ImportError: cannot import name 'factorial'```
Run Code Online (Sandbox Code Playgroud)
0 0*_*0 0 35
从statsmodels的github repo上的此问题开始,解决方案似乎是将SciPy降级到1.2版(当前使用的版本是1.3)。
至少对我来说,SciPy 1.2具有factorial该scipy.misc软件包中的功能。
你可以做
python3.6 -m pip install scipy==1.2 --upgrade
Run Code Online (Sandbox Code Playgroud)
--user如果您没有标准安装权限,请使用该选项。
也许您想避免使用点子,因为您正在使用Conda。您也应该能够在Conda中固定scipy的版本,但是,如果您不打算在环境中添加任何其他软件包,请使用该pip版本。
当然,降级SciPy可能会在其他地方引起问题,但这很难预见,尤其是在不确切知道您已经安装了哪些其他软件包和依赖项的情况下。您只需要找出答案。手指因为没有最终陷入依赖地狱而走了(因为您已经走到家门口了)。
对于更奇怪的是,scipy.misc.factorial从1.0版开始不推荐使用;scipy.special.factorial应该改为使用。
但是,在1.2版中导入不会显示任何明确的警告,也不会使用它。这可以解释为什么statsmodels仍然使用旧的导入。即将statsmodels发布下一版本的修复程序。
感谢@ 9769953。
pip3 uninstall statsmodels #确保删除旧版本pip3 install statsmodels==0.10.0rc2 --pre --user #安装statsmodels的候选版本为我修复它。
您可以使用pip3 list
摘要:在终端中复制并运行以下内容:
pip3 uninstall statsmodels -y
pip3 install statsmodels==0.10.0rc2 --pre --user
Run Code Online (Sandbox Code Playgroud)
并且不要忘记重启 jupyter笔记本的内核 :)