【发布时间】:2015-06-10 17:14:31
【问题描述】:
我正在尝试在我的项目中将 arff 文件转换为 libsvm 文件,所以任何人都可以帮助我这样做,提前谢谢你
【问题讨论】:
我正在尝试在我的项目中将 arff 文件转换为 libsvm 文件,所以任何人都可以帮助我这样做,提前谢谢你
【问题讨论】:
我编写了自己的 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文件的文件名。
【讨论】:
for i in range(1,len(dataList)-1): resultLine += str(i) resultLine += (":"+dataList[i]+" ") 这会跳过每行的第一个数据点,应该是:for i in range(1,len(dataList)): resultLine += str(i) resultLine += (":"+dataList[i-1]+" ")