在同一目錄下建立三個資料夾code,input,ouput
code
**資料夾,內含主程式load_libsvm.py
input
輸入:libsvm格式的資料集
output
輸出:轉換成csv格式的資料集
read_libsvm:讀取libsvm格式的資料集,返回svm(python sklearn)所需的訓練引數x和y。即可以直接讀取libsvm格式的資料集進行訓練。
tansfrom_libsvm:將libsvm格式的資料集轉換成csv格式的資料集
import csv
import numpy as np
from sklearn.svm import svc
def read_libsvm(input_file, max_feature):
"""讀取libsvm格式的資料集
:param input_file: 資料集檔名
:param max_feature: 資料集最大維
:return: svm的訓練引數x,y
"""count = 0#樣本個數
y=x=
path="../input/"
with open(path+input_file, 'r', newline='') as f:
reader = csv.reader(f, delimiter=" ")
# 每一行
for line in reader:
if(line[-1]==''):
line.pop(-1)#去掉末尾""空字元
# 獲取y
y_line=line.pop(0)
temp=0
temp_x=
# 獲取x
try:
for str in line:
index = int(str.split(":")[0])
value=float(str.split(":")[1])
# 沒列出的列全部為0
for j in range(temp,index):
if j
else:
temp=index
break
count += 1
except keyerror:
continue
# 補全每一行最後一維到最大維度的0值
for i in range(count):
for j in range(len(x[i]),max_feature):
y=np.array(y)
x=np.array(x).reshape(count,max_feature)
return x,y
def transform_libsvm(inputfile,max_feature):
"""將libsvm格式轉換成csv格式,保留原資料集
:param inputfile: libsvm格式的資料集
:param max_feature: 要轉換的資料集的最大維
:return: 輸出csv格式的資料集
"""path="../input/"
x,y=read_libsvm(path+inputfile,max_feature)
rows=x.shape[0]
columns=x.shape[1]
file=open("../output/"+inputfile+".csv","w+")
for r in range(rows):
r_line=""
for c in range(columns):
temp=str(x[r,c])+","
r_line+=temp
r_line+=str(y[r])
file.write(r_line+"\n")
file.close()
# if __name__ == '__main__':
# x,y=read_libsvm("a1a",123)
# transform_libsvm("a1a",123)
(1)引數與返回值:
(2)示例:讀取123維的資料集a1a
x,y=read_libsvm("a1a",123)
(3)呼叫方式:
直接在該程式中呼叫read_libsvm函式或在其他程式中通過from … import … 匯入該函式後再呼叫
(1)引數與返回值:
(2)示例:將a1a轉換成a1a.csv
transform_libsvm("a1a",123)
(3)呼叫方式:
直接在該程式呼叫transform_libsvm函式或在其他程式中通過from … import … 匯入該函式後再呼叫
ps.由於需要指定最大維,目前不支援批量轉換
libsvm資料格式
libsvm資料格式 libsvm資料格式 libsvm使用的訓練資料和檢驗資料檔案格式如下 label index1 value1 index2 value2 label index1 value1 index2 value2 label目標值,就是說class 屬於哪一類 就是你要分類的種類,通...
轉換資料為libsvm格式
開啟formatdatalibsvm.xls 啟用巨集,之後 一 xls轉 1 開啟xls資料檔案 注 網上介紹 直接將資料貼上到sheet1的topleft單元,將資料直接貼上到sheet1的左邊單元格 2 開發工具 巨集 formatdatatolibsvm 執行 二 txt,data轉 注 t...
libsvm的資料格式及製作
libsvm使用的訓練資料和檢驗資料檔案格式如下 label index1 value1 index2 value2 label index1 value1 index2 value2 label目標值,就是說class 屬於哪一類 就是你要分類的種類,通常是一些整數。index是有順序的索引,通常...