1. 程式人生 > >使用python生成libSVM的資料格式

使用python生成libSVM的資料格式

最近要做SVM分類,使用libsvm,需要將excel的資料轉化到libsvm格式下。

libsvm資料格式如下:(第一列是labels,後面是依次的features,空缺表示null)

+1 4:-0.320755 
-1 1:0.583333 2:-1 3:0.333333
+1 1:0.166667 2:1 3:-0.333333 4:-0.433962  
-1 1:0.458333 3:1 4:-0.358491 

網上查了一下,發現都是用FormatDataLibsvm.xls這個檔案的,但是又找不到這個檔案,就自己python寫了一個,需要用的而且自己不想寫的就拿去用吧。

##
# create by zhenyuxiaoge on 2016/11/25
##

# transform data.txt to libsvm type data, get libsvm.txt

#read data file
readin = open('data.txt', 'r')
#write data file
output = open('libsvm.txt', 'w')
try:
    the_line = readin.readline()
    while the_line:
        # delete the \n
        the_line = the_line.strip('\n')
        index = 0;
        output_line = ''
        for sub_line in the_line.split('\t'):
            #the label col
            if index == 0:
                output_line = sub_line
            #the features cols
            if sub_line != 'NULL' and index != 0:
                the_text = ' ' + str(index) + ':' + sub_line
                output_line = output_line + the_text
            index = index + 1
        output_line = output_line + '\n'
        output.write(output_line)
        the_line = readin.readline()
finally:
    readin.close()

程式碼比較簡單,就直接複製好了,相應的地方可以自己改動一下。這邊是第一列預設是label,空值為大寫的NULL。