在PyWeka(pythonweka包装器)中使用包

在PyWeka(pythonweka包装器)中使用包,python,wrapper,weka,Python,Wrapper,Weka,我需要一些在PyWeka中使用已安装软件包的帮助。我可以安装软件包,但我无法使用它们或找到它们的安装位置。当我试图找到完整的类名时,我得到一个异常(当没有匹配的模块时发生) 例如: import weka.core.classes as core core.complete_classname("J48") 输出 'weka.classifiers.trees.J48' True ------------------------------------------------------

我需要一些在PyWeka中使用已安装软件包的帮助。我可以安装软件包,但我无法使用它们或找到它们的安装位置。当我试图找到完整的类名时,我得到一个异常(当没有匹配的模块时发生)

例如:

import weka.core.classes as core
core.complete_classname("J48")
输出

  'weka.classifiers.trees.J48'
True
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-25-7ea05097d6f1> in <module>()
      1 import weka.core.classes as core
      2 print(packages.is_installed("DMNBtext"))
----> 3 core.complete_classname("DMNBtext")

/usr/local/lib/python3.6/dist-packages/weka/core/classes.py in complete_classname(classname)
   1725         return str(result[0])
   1726     elif len(result) == 0:
-> 1727         raise Exception("No classname matches found for: " + classname)
   1728     else:
   1729         matches = []

Exception: No classname matches found for: DMNBtext
我正在尝试安装DMNBtext包。已安装,但找不到模块

import weka.core.classes as core
print(packages.is_installed("DMNBtext"))
core.complete_classname("DMNBtext")
输出

  'weka.classifiers.trees.J48'
True
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-25-7ea05097d6f1> in <module>()
      1 import weka.core.classes as core
      2 print(packages.is_installed("DMNBtext"))
----> 3 core.complete_classname("DMNBtext")

/usr/local/lib/python3.6/dist-packages/weka/core/classes.py in complete_classname(classname)
   1725         return str(result[0])
   1726     elif len(result) == 0:
-> 1727         raise Exception("No classname matches found for: " + classname)
   1728     else:
   1729         matches = []

Exception: No classname matches found for: DMNBtext
True
---------------------------------------------------------------------------
异常回溯(最后一次最近调用)
在()
1导入weka.core.classes作为核心
2个打印(已安装软件包(“DMNBtext”))
---->3.完整的类名(“DMNBtext”)
/usr/local/lib/python3.6/dist-packages/weka/core/classes.py完整的类名(classname)
1725返回str(结果[0])
1726 elif len(结果)=0:
->1727引发异常(“未找到与:“+classname”匹配的类名)
1728其他:
1729个匹配项=[]
异常:未找到与以下项匹配的类名:DMNBtext
请注意,is_installed提供了真实的输出,这意味着软件包已安装

你知道我该怎么解决这个问题吗? 另外,我的jvm是以packages=True启动的,所以这应该不是问题。
提前感谢。

我刚刚创建了一个新的虚拟环境,其中包括:

然后成功运行以下脚本(如果尚未安装
DMNBtext
程序包,则需要运行两次):

导入系统 将weka.core.jvm导入为jvm 将weka.core.packages作为包导入 从weka.core.classes导入完整的\u类名 start(packages=True) pkg=“DMNBtext” #如有必要,请安装软件包 如果未安装软件包,是否安装了_(软件包): 打印(“安装%s..%pkg”) 软件包。安装_软件包(pkg) 打印(“已安装%s,请重新运行脚本!”%pkg) jvm.stop() 系统出口(0) #测试类名完成 打印(完整的类名(“.J48”)) 打印(完整的类名(“.DMNBtext”)) jvm.stop() 安装
DMNBtext
包后,脚本将输出以下内容:

weka.classifiers.trees.J48
weka.classifiers.bayes.DMNBtext

我假设您已经在Anaconda上安装并运行了pyWeka。如何做到这一点的细节如下

您应该开始激活java虚拟机

import weka.core.jvm as jvm
import weka.core.classes as core
jvm.start(packages=True)    # needed for package manipulation
from weka.classifiers import Classifier # you are going to classify something

import weka.core.packages as packages # so you can install packages
packages.install_package('DNMNBtext') # if it is not already installed. 
                                      # You can also install it on Weka
现在您可以发布:

core.complete_classname("DMNBtext")
查找类的名称

'weka.classifiers.bayes.DMNBtext' 
最后

dmnb = Classifier(classname="weka.classifiers.bayes.DMNBtext")
dmnb.options=[list of options]
保重