首页 > 解决方案 > 无法适应 GaussianNB - ModuleNotFoundError: No module named 'sklearn.utils._pprint'

问题描述

尝试运行 的.fit方法时GaussianNB,我收到以下错误:

ModuleNotFoundError: No module named 'sklearn.utils._pprint'

我能够交叉验证:

cv_result = cross_val_score(GaussianNB(), X_train, y_train, cv=kfold, scoring=scoring,n_jobs=njobs)

但是以下不起作用:

NB = GaussianNB()
NB.fit(X_train, y_train)

我目前正在使用 Anaconda Jupyter 笔记本并使用以下版本

jupyter-client==5.3.1
jupyter-console==6.0.0
jupyter-core==4.5.0

scikit-learn==0.21.3

关于是什么原因以及如何解决它的任何想法?

标签: pythonscikit-learnnaivebayespprint

解决方案


该命令对我来说在 scikit-learn 0.21.3 版上运行良好。您的 ipython 和相关模块可能安装在与 scikit-learn 不同的环境中。您应该能够通过编写脚本并使用 python 执行它来测试它。如果可行,但在 ipython 控制台或 jupyter 笔记本中无法运行,请尝试使用 anaconda/pip 重新安装 ipython、jupyter 和 scikit-learn。

具体来说,我认为您的错误是由于NB.fit返回self. 这使得 jupyter notebook 试图NB通过该方法显示对象__repr__,而该方法又依赖于sklearn.utils._pprint. 一个快速的解决办法是改变

NB.fit(x,y)

NB = NB.fit(x,y)

推荐阅读