【发布时间】:2015-10-27 23:31:52
【问题描述】:
环顾四周,我找不到将 libsvm 与 Java 结合使用的好方法,但我仍有一些悬而未决的问题:
1) 可以只使用 libsvm 还是我也必须使用 weka?如果有,有什么区别?
2) 使用字符串类型数据时,如何将训练集作为字符串传递?我正在使用 matlab 解决蛋白质分类的类似问题,在那里我只是将字符串交给机器而没有问题。有没有办法在 Java 中做到这一点?
这是我在 matlab 中所做的一个不完整的示例(它有效):
[~,posTrain] = fastaread('dataset/1.25.1.3_d1ilk__.pos-train.seq');
[~,posTest] = fastaread('dataset/1.25.1.3_d1ilk__.pos-test.seq');
trainKernel = spectrumKernel(trainData,k);
testKernel = spectrumKernel(testData,k);
trainKf =[(1:length(trainData))', trainKernel];
testKf = [(1:length(testData))', testKernel];
disp('custom');
model = libsvmtrain(trainLabel,trainKf,'-t 4');
[~, accuracy, ~] = libsvmpredict(testLabel,testKf,model)
如您所见,我以 fasta 格式读取文件并将它们提供给 libsvm,但用于 java 的 libsvm 看起来需要由 double 组成的名为 Node 的东西。我所做的是从 String 中获取 byte[],然后将它们转换为 Double。对吗?
3) 如何使用自定义内核?我找到了这行代码
KernelManager.setCustomKernel(custom_kernel);
但我的 libsvm.jar 找不到。我必须使用哪个库?
对于多个问题,我很抱歉,我希望您能给我简要介绍一下这里发生的事情。 谢谢。
【问题讨论】:
-
您能给我们一些示例代码来说明您对#2 的含义吗?您是否希望直接从 csv 读取字符串,并将它们传递到 LibSVM 而不对它们做任何事情?对于#3,您在哪里找到该代码?维卡?
-
@NBartley 帖子已更新,对于#3,我发现使用 google 的帖子。我不记得在哪里
标签: java weka libsvm text-classification