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 sklearn
和 sklearn.__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__”