首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我在python上使用libsvm时,AttributeError

当我在python上使用libsvm时,AttributeError
EN

Stack Overflow用户
提问于 2022-08-11 12:23:56
回答 1查看 71关注 0票数 1

我正在试图克服以下代码段引发的一些错误:

代码语言:javascript
运行
复制
import os
from libsvm.svmutil import *
from scipy.io import loadmat

data = loadmat(os.path.join('Data','ex6data1.mat'))
X,y = data['X'],data['y'][:,0]
model = svm_train(y,X,'-s 0 -t 2 -c 0.2 -g 2.8')
print(model)

它会产生此错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "E:\Pythonlean\machine\venv\lib\site-packages\scipy\__init__.py", line 214, in __getattr__
    return globals()[name]
KeyError: 'ctypeslib'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\Pythonlean\machine\Exercise6\test2.py", line 7, in <module>
    model = svm_train(y,X,'-s 0 -t 2 -c 0.2 -g 2.8')
  File "E:\Pythonlean\machine\venv\lib\site-packages\libsvm\svmutil.py", line 92, in svm_train
    prob = svm_problem(y, x, isKernel=(param.kernel_type == PRECOMPUTED))
  File "E:\Pythonlean\machine\venv\lib\site-packages\libsvm\svm.py", line 218, in __init__
    scipy.ctypeslib.as_array(self.y, (self.l,))[:] = y
  File "E:\Pythonlean\machine\venv\lib\site-packages\scipy\__init__.py", line 216, in __getattr__
    raise AttributeError(
AttributeError: Module 'scipy' has no attribute 'ctypeslib'

所有包版本:

  • libsvm-official(3.25.0)
  • scipy(1.9.0)
  • numpy(1.23.1)
EN

回答 1

Stack Overflow用户

发布于 2022-08-12 00:22:24

libsvm-official版本3.25.0的库代码包含一个使用scipy.ctypeslib的引用,该引用并不存在。你要么修补他们的代码,要么更新库。

引用这个问题的评论

ctypeslib实际上来自于numpy。最好直接从那里进口。 映射all命名空间中的所有numpy符号是我们可能不会再次做出的早期设计决策。FWIW,我建议只对它显式提供的子包使用and,而忽略numpy中反映的所有内容。直接从numpy进口numpy的东西。 #10290中不推荐使用numpy镜像(在#15230中实际删除ctypeslib和其他从numpy导入的模块,尽管这看上去主要是偶然的)。只有函数才会得到不推荐的警告处理,因为与调用函数不同,很难实现访问模块的弃用。

相应的PR,如果这些被废弃的话是在SciPy 1.4.0中发布的。当前代码必须使用numpy.ctypesliblibsvm-official 3.25.0于2021年4月发布,这有点令人惊讶,但贬义PR于2019年10月合并。哦,好吧。

好消息是,最新版本3.3的变化量g已经修复了这个问题:

3.3: 2022/8/11引入的单级概率输出直接使用numpy使用numpy,而不是在枕叶中使用镜像的

因此,希望能够将库更新为libsvm-official==3.3,从而解决这个问题。这个版本是全新的(当我发布这篇文章时,上面的日期几乎是“今天”),但它是还没有在PyPI上。希望他们能很快上传到PyPI上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73320617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档