在Java中使用libsvm进行字符串分类

在Java中使用libsvm进行字符串分类,java,weka,libsvm,text-classification,Java,Weka,Libsvm,Text Classification,环顾四周,我没有找到一种将libsvm与Java结合使用的好方法,我仍然有一些悬而未决的问题: 1) 可以只使用libsvm,或者我也可以使用weka?如果有的话,有什么区别 2) 使用字符串类型数据时,如何将训练集作为字符串传递?我在用matlab处理一个类似的蛋白质分类问题,在那里我把字符串毫无问题地交给了机器。有没有一种在Java中实现这一点的方法 下面是我在matlab中所做工作的一个不完整示例(它可以工作): 正如您所看到的,我以fasta格式读取文件并将它们提供给libsvm,但是l

环顾四周,我没有找到一种将libsvm与Java结合使用的好方法,我仍然有一些悬而未决的问题:

1) 可以只使用libsvm,或者我也可以使用weka?如果有的话,有什么区别

2) 使用字符串类型数据时,如何将训练集作为字符串传递?我在用matlab处理一个类似的蛋白质分类问题,在那里我把字符串毫无问题地交给了机器。有没有一种在Java中实现这一点的方法

下面是我在matlab中所做工作的一个不完整示例(它可以工作):

正如您所看到的,我以fasta格式读取文件并将它们提供给libsvm,但是libsvm for java看起来需要一个名为Node的东西,它是由double组成的。我所做的是从字符串中提取byte[],然后将它们转换为Double。对吗

3) 如何使用自定义内核?我找到了这行代码

 KernelManager.setCustomKernel(custom_kernel);      
但是用我的libsvm.jar我找不到。我必须使用哪个库

很抱歉问了这么多问题,我希望你能给我简要介绍一下这里发生的事情。
谢谢。

请注意,我已经将LIBSVM用于MATLAB,但没有用于Java。我只能回答问题1,但希望这仍然有帮助:

  • 完全可以只使用libsvm,代码位于以下位置:。请注意,jlibsvm是libsvm的一个端口,它似乎更易于使用,并且更适合于Java。据我所知,weka只是有一个运行libsvm的包装器类(它甚至需要libsvm.jar),尽管我主要基于以下内容:

  • 你能给我们一些你对#2意味着什么的示例代码吗?您是否希望直接从csv读取字符串,并将其传递到LibSVM,而不做任何操作?对于#3,你在哪里找到了代码?Weka?@NBartley post更新了,我在谷歌上找到了第三个。我不记得在哪里了
     KernelManager.setCustomKernel(custom_kernel);