Я пытаюсь преобразовать файл arff в файл libsvm в своем проекте, так что кто-нибудь может мне помочь в этом, заранее спасибо
как преобразовать файл arff в файл libsvm
Ответы (2)
Я написал свой собственный скрипт 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()
Этот сценарий может преобразовать этот тип файла ARFF weka, указанный на этом веб-сайте в файл LIBSVM, указанный на этом веб-сайте. Я надеюсь, что этот скрипт может помочь вам.
Чтобы использовать этот скрипт, в терминале вы можете просто ввести:
./python convertToSVM.py inputfilename outputfilename
Имя входного файла — это входной файл ARFF, а имя выходного файла — имя выходного файла libsvm.
person
Iching Chang
schedule
27.04.2015
Я нашел это полезным, но я считаю, что в этом скрипте есть ошибка в самом внутреннем цикле for:
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]+" ")
- person Vito; 08.12.2016
ответ от Chang в порядке, однако сценарий дает сбой в тех случаях, когда метка класса не является последней записью в экземпляре. данные.
Встроенный класс Weka LibSVMSaver
(doc) является лучшим вариантом для достижения требуемых результатов. Его можно использовать внутри проектов, а также из командной строки.
person
Atif
schedule
07.03.2017