如何将arff文件转换为libsvm文件

时间:2015-04-06 10:01:02

标签: svm libsvm arff

我正在尝试将arff文件转换为我项目中的libsvm文件,所以任何人都可以帮我这样做,谢谢你提前

2 个答案:

答案 0 :(得分:4)

我编写了自己的python脚本来完成这项工作:

import sys

if(len(sys.argv) < 3):
    print("usage: ./python convertToSVM.py inputfilename outputfilename")
#print sys.argv[1]

inputfilename = sys.argv[1]
fin = open(inputfilename,'r')
lines = fin.readlines()
fin.close()
outputfilename = sys.argv[2]
fout = open(outputfilename,'w')

beginToRead = False
for line in lines:
    if beginToRead == True:
        if len(line) > 5:# not an empty line
            #read this line
            dataList = line.split(',')
            resultLine = ''
            resultLine += dataList[-1].strip()
            resultLine += ' '
            for i in range(1,len(dataList)-1):
                resultLine += str(i)
                resultLine += (":"+dataList[i]+" ")
            #print(resultLine)
            fout.write(resultLine+"\n")

    if line[0:5] == '@data':
        beginToRead = True

fout.close()

此脚本可以将此website中指定的此类weka ARFF文件转换为此website中指定的LIBSVM文件。我希望这个脚本可以帮助你。

要使用此脚本,请在终端中输入:

./python convertToSVM.py inputfilename outputfilename

inputfilename是输入ARFF文件,outputfilename是输出libsvm文件的文件名。

答案 1 :(得分:1)

Chang的answer很好,但是,如果类标签不是Instance数据中的最后一个条目,则脚本会失败。

Weka内置类LibSVMSaverdoc)是获得所需结果的更好选择。它可以在项目内部和命令行中使用。