【发布时间】:2014-01-17 23:26:02
【问题描述】:
我正在 Matlab 中做一个关于图像处理的项目,并希望实施 LIBSVM 以进行监督学习。
我在准备数据时遇到了问题。 我有 CSV 格式的数据,当我尝试使用 LIBSVM 常见问题解答中提供的信息将其转换为 libsvm 格式时:-
matlab> SPECTF = csvread('SPECTF.train'); % read a csv file
matlab> labels = SPECTF(:, 1); % labels from the 1st column
matlab> features = SPECTF(:, 2:end);
matlab> features_sparse = sparse(features); % features must be in a sparse matrix
matlab> libsvmwrite('SPECTFlibsvm.train', labels, features_sparse);
我得到以下形式的数据:
3.0012 1:2.1122 2:0.9088 ...... [值 1] [索引 1]:[值 2] [索引 2]:[值 3]
即第一个值不带索引,索引1后面的值是值2。
根据我阅读的内容,数据应采用以下格式:
[标签] [索引 1]:[值 1] [索引 2]:[值 2]......
[标签] [索引 1]:[值 1] [索引 2]:[值 2]......
我需要帮助才能做到这一点。 而且,如果有人能给我一个关于如何给标签的线索,那将非常有帮助。
提前感谢您, 西德拉
【问题讨论】:
-
对于 libsvm,您不需要将数据写入文件。将它们直接传递给 svmtrain 和 svmpredict。
-
@ A. Donda:我正在使用 LIBSVM(支持向量机库)csie.ntu.edu.tw/~cjlin/libsvm。为此,我需要将数据写入文件。请指教。我也会尝试使用 svmtrain 和 svmpredict,谢谢。
-
我知道那个库,我自己使用它。如果使用 Matlab 接口,则无需将数据写入文件:csie.ntu.edu.tw/~cjlin/libsvm/#matlab> 标准下载包中应包含相应的 mex 文件。
-
@A.Donda :函数“libsvmwrite”将数据写入文件对吗? libsvmwrite('filename', label_vector, instance_matrix) 。其中 'filename' 是要写入数据的文件的名称。例如,“文件名”是“heart.train”,即使在库中也给出了示例。
-
@A.Donda :如果不使用 libsvmwrite,我还能如何进行数据准备?取悦指南。