2014-09-27 114 views
0

libsvm使用所謂的「稀疏」格式,其中零值不需要存儲。 1:1 3:2如何轉換爲SVM數據格式

我有一個數據集,其中來自一個稀疏矩陣,因此作爲具有屬性數據被表示。我的數據集的格式是[row_number column_num value]。我粘貼我的數據集如下:

Row number    column number            value 
75         1            0.0079 
76         1            0.0046 
37         1            0.0032 
31         1            0.0028 
41         1            0.0026 
64         1            0.0026 
37         1            0.0025 
18         1            0.0024 
94         1            0.0024 
34         1            0.0023 
64         1            0.0022 
40         1            0.0021 

我的問題是如何將我的數據傳輸到格式LIBSVM,像 1 18:0.0024 31:0.0028 34:0.0023 37:0.0032 37:0.0025 40: 0.0021 41:0.0026 ......

注意:+1平均等級1,如果我想表達類2,我會在數據前加上+2。 任何人都可以給予幫助,並告訴我如何通過使用Matlab來實現這一點!非常感謝!

回答

0

請看下面的例子稀疏矩陣:

x = sparse(10,1); 
x(3) = 0.04546236; 
x(7) = 1.726; 
x(8) = 0.63; 

然後

[row, col, val] = find(x); 

row = 
    3 
    7 
    8 

val = 
    0.0455 %// this appears rounded, but the correct value is stored 
    1.7260 
    0.6300 

所以:

str = strcat(num2str(row), ':', num2str(val), {' '}); 
str = [str{:}]; 
str = regexprep(str, ':\s+', ':'); %// remove extra spaces 

給串

3:0.045462 7:1.726 8:0.63 

要添加字符串​​在前面,用標準的連接:

str = ['+1 ' str]; 
+0

路易斯Mendo,非常感謝! – 2014-09-27 18:28:24

+0

另一個問題,如何把+1或+2或+3 ...放在數據前面? – 2014-09-27 18:31:01

+0

查看編輯答案 – 2014-09-27 18:33:10

相關問題