ImportError:无法导入sklearn.mixture中的名称choice

9 投票
4 回答
29948 浏览
提问于 2025-04-18 15:04

我正在使用scikit learn 0.15.0版本。当我尝试导入sklearn.mixture时,出现了错误:ImportError: cannot import name choice。

有没有什么建议?

===================================================================

In [1]: **from sklearn import mixture**

ImportError                               Traceback (most recent call last)
<ipython-input-1-05bc76cab98d> in <module>()
----> 1 from sklearn import mixture

/home/f/anaconda/lib/python2.7/site-packages/sklearn/mixture/__init__.py in <module>()
      3 """
      4
----> 5 from .gmm import sample_gaussian, log_multivariate_normal_density
      6 from .gmm import GMM, distribute_covar_matrix_to_match_covariance_type
      7 from .gmm import _validate_covars

/home/f/anaconda/lib/python2.7/site-packages/sklearn/mixture/gmm.py in <module>()
     16 from ..utils import check_random_state, deprecated
     17 from ..utils.extmath import logsumexp, pinvh
---> 18 from .. import cluster
     19
     20 from sklearn.externals.six.moves import zip

/home/f/anaconda/lib/python2.7/site-packages/sklearn/cluster/__init__.py in <module>()
      4 """
      5
----> 6 from .spectral import spectral_clustering, SpectralClustering
      7 from .mean_shift_ import mean_shift, MeanShift, estimate_bandwidth, \
      8     get_bin_seeds

/home/f/anaconda/lib/python2.7/site-packages/sklearn/cluster/spectral.py in <module>()
     16 from ..neighbors import kneighbors_graph
     17 from ..manifold import spectral_embedding
---> 18 from .k_means_ import k_means
     19
     20

/home/f/anaconda/lib/python2.7/site-packages/sklearn/cluster/k_means_.py in <module>()
     28 from ..utils import as_float_array
     29 from ..utils import gen_batches
---> 30 from ..utils.random import choice
     31 from ..externals.joblib import Parallel
     32 from ..externals.joblib import delayed

ImportError: cannot import name choice

4 个回答

0

新的实现方式是

from sklearn import mixture
model = mixture.GaussianMixture(n_components=3, covariance_type='full')

只需要替换前两行代码就可以了

2

我在尝试用 from sklearn.cluster import KMeans 导入 KMeans 的时候,遇到了同样的错误。

错误信息 > ImportError: cannot import name choice

我在这里找到了答案:https://github.com/scikit-learn/scikit-learn/issues/3461

几天前我把 Scikit 升级到了 0.15 版本,结果在 /usr/local/lib/python2.7/dist-packages/sklearn/utils 这个地方还留着一个旧版本的 random.so 文件。

我手动把它删掉了,现在就不再出现这个错误了。

希望这对你有帮助。

4

正如所提到的,这可能跟旧文件有关(这些文件是用Python写的,而不是库?)在你可能通过命令“pip install -U packagename”更新的新包中(在我的例子中是“pip install -U scikit-learn”)。在手动删除文件之前,先尝试卸载这个包再重新安装一下,可能会有效果……(在我的情况下是这样)

卸载

(在我的例子中是在Anaconda命令提示符下运行):

   pip uninstall scikit-learn

然后:

   pip install -U numpy scipy scikit-learn

(添加依赖项以防万一)

然后再确认一下

   pip install scikit-learn

应该会显示它已安装

8
from sklearn.mixture import GaussianMixture
from sklearn.cluster import KMeans
     16 from ..neighbors import kneighbors_graph
     17 from ..manifold import spectral_embedding
---> 18 from .k_means_ import k_means

使用这个方法可以让它更专门地处理 .gmm 文件,

而且

对于:

撰写回答