sklearn 中的 AttributeError

Posted

技术标签:

【中文标题】sklearn 中的 AttributeError【英文标题】:AttributeErrror at sklearn 【发布时间】:2019-04-12 10:15:11 【问题描述】:

我刚刚使用 pip 安装了 sklearn。当我尝试导入任何东西时,我得到一个 AttributeError。

import sklearn # No error

from sklearn import svm # AttributeError

from sklearn import datasets # Same AttributeError

完整输出:Traceback(最近一次调用最后一次):test.py", 第 1 行,在 从 sklearn 导入集群文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\cluster__init__.py”, 第 6 行,在 从 .spectral 导入spectral_clustering,SpectralClustering 文件 "AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\cluster\spectral.py", 第 15 行,在 从 ..metrics.pairwise 导入 pairwise_kernels 文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\metrics__init__.py”, 第 7 行,在 从 .ranking 导入 auc 文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\metrics\ranking.py”, 第 27 行,在 从 scipy.stats 导入 rankdata 文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\stats__init__.py”, 第 345 行,在 从 .stats 导入 * 文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\stats\stats.py”, 第 171 行,在 从 。导入分发文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\stats\distributions.py”, 第 13 行,在 从 。导入 _continuous_distns 文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\stats_continuous_distns.py”, 第 113 行,在 类 norm_gen(rv_continuous):文件“AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\stats_continuous_distns.py”, 第 175 行,在 norm_gen optimizer 参数被忽略。\n\n""") 文件 "AppData\Local\Programs\Python\Python37-32\lib\site-packages\scipy\misc\doccer.py", 第 159 行,在 _doc start_of_notes = cls_docstring.find(notes_header) AttributeError: 'NoneType' 对象没有属性 'find'

# From doccer.py
def _doc(func):
    cls_docstring = getattr(cls, func.__name__).__doc__
    notes_header = '        Notes\n        -----\n'
    # XXX The following assumes that there is a Notes section.
    start_of_notes = cls_docstring.find(notes_header) # This is line 159
    end_of_notes = cls_docstring.find('        References\n')
    if end_of_notes == -1:
        end_of_notes = cls_docstring.find('        Examples\n')
        if end_of_notes == -1:
            end_of_notes = len(cls_docstring)
    func.__doc__ = (cls_docstring[:start_of_notes + len(notes_header)] +
                    notes +
                    cls_docstring[end_of_notes:])
    return func
return _doc

我正在使用 Python 3.7.1

有人知道如何解决这个问题吗? 我不确定要包括哪些更多信息,所以如果您需要更多信息,请告诉我。

编辑1: 我试着在我的电脑上做同样的事情,它工作得很好。仅在使用笔记本电脑时才会出现此问题。

【问题讨论】:

您是否在运行 Python 时启用了-OO?如果是这样,请尝试关闭-OO 这将有助于发布完整、准确的错误消息,包括完整的堆栈跟踪。 您能详细说明一下吗?我不确定 -oo 是什么,如何关闭它? -OO 是command-line option。根据您运行 Python 的方式,您可能需要检查 IDE 选项或类似的东西以查看命令行选项的外观。 输入 import sklearnsklearn.__version__。输出是什么? 【参考方案1】:

这似乎是一个损坏的安装问题。

请试试这些:

在您尝试导入 sklearn 之前,打开您的终端 (cmd) 并尝试这些操作。

pip3 install -U scikit-learn

还要确保你有 numpy 和 scipy:

pip3 install numpy 
pip3 install scipy

编辑 1:

也试试这个:

pip uninstall scikit-learn
sudo pip install scikit-learn

【讨论】:

我试过这样做。 scikit-learn 命令给了我“要求已经是最新的”,而另外两个命令给了我“要求已经满足”,然后我尝试打印 sklearn.__version__,它给了我 0.20.0,并且 from sklearn import datasets 给了我同样的错误。 Windows 还是 MacOS?另外,尝试pip uninstall scikit-learn 然后sudo pip install scikit-learn 我也无法卸载 scikit-learn,它会给出“FileNotFoundError”。我怀疑这是因为我的 c-drive 用户名中有一个空格。我会试着弄清楚如何重命名它,看看它是否有任何改变 我用的是windows 我认为该软件包安装在错误的位置。您需要卸载它,然后重新安装。你用conda ??【参考方案2】:

我当前的用户在 c-drive 用户名中有一个空格。我尝试在没有空格的情况下在我的笔记本电脑上创建另一个用户,下载了 python 3.7.1 并 pip 安装了 scikit-learn,它工作得很好!

【讨论】:

以上是关于sklearn 中的 AttributeError的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:模块“sklearn.metrics”没有属性“items”

python sklearn pipiline fit:“AttributeError:未找到下限”

Sklearn 错误:“AttributeError:‘MissingValues’对象没有属性‘to_list’”

sklearn使用FeatureHasher处理字符串特征: AttributeError: ‘str‘ object has no attribute ‘items‘

AttributeError:类型对象“sklearn.tree._tree.TreeBuilder”没有属性“__reduce_cython__”

使用自定义转换器子类对 sklearn 管道进行评分时出现 AttributeError,但在拟合时却没有