Python导入错误:无法导入名称datafunc [PyML]
我安装了PyML这个包,目的是为了使用一些机器学习算法,按照教程说我的安装是成功的。
我尝试运行一个Python脚本,里面有一行代码是用来导入PyML的模块:
from PyML import datafunc, svm, assess, modelSelection, ker
但是我收到一个错误信息,上面写着:
File
<stdin>
, line 1, in<module>
ImportError: cannot import name datafunc
意思是说无法导入名为datafunc的模块。我在终端里检查每个模块,输入:
from PyML import datafunc, from PyML import svm, from PyML import ker
结果只有datafunc出现了错误信息。PyML库是在Python 2.7的site-packages
文件夹下。
我查看了这个问题:Python错误:ImportError: cannot import name Akismet,但我没看到它能帮我解决我的问题。
你知道为什么Python能导入某些模块,但这个模块却导入不了吗?
1 个回答
在PyML-0.7.13.3版本中,datafunc
模块位于PyML/containers
这个文件夹里。
所以看起来你可以这样导入这个模块:
from PyML.containers import datafunc
但是会出现错误,因为datafunc
模块使用了一些未定义的类,分别是BaseVectorDataSet
和SparseDataSet
。
因此,你需要修改PyML的源代码才能使用datafunc
模块。
首先,在PyML/containers/datafunc.py
文件的开头加上以下两行,然后重新安装PyML库。
from PyML.containers.baseDatasets import BaseVectorDataSet
from PyML.containers.vectorDatasets import SparseDataSet
这样你就可以像下面这样导入模块了:
from PyML import svm, modelSelection, ker
from from PyML.containers import datafunc
from from PyML.evaluators import assess
顺便说一下,我建议你使用更有文档支持和经过测试的机器学习库,比如scikit-learn。