LIBSVM学习(三)数据格式

  • Post author:
  • Post category:其他


最近学习LIBSVM,下载了libsvm各种版本,本博客中使用310版本。

  1. LIBSVM数据格式

LIBSVM工具箱中集成了libsvm数据格式读取函数,在子目录matlab下,有源代码libsvmread.c和libsvmwrite.c。LIBSVM需要的数据格式如下:

0 1:-0.961538 2:-0.830769 # 标签列 index:value

0 1:-0.941545 2:-0.778706 # 均为归一化数据

0 1:-0.972158 2:-0.730858 #

1.1 libsvmread.c

打开README文档,发现对于libsvmread函数给出了具体用法。在libsvmread.c中也给出了“Usage”

void exit_with_help()

{

mexPrintf(

“Usage: [label_vector, instance_matrix] = libsvmread(‘filename’);\n”

);

} // label_vector:filename 第一列 , instance_matrix:特征数据

这是简单的应用,具体请看README或者libsvmread.c代码,这里不再赘述。

1.2 libsvmwrite.c

一般情况下,我们需要训练的是一组数据,想要使用LIBSVM还需要进行数据格式转换。使用matlab转换格式首先需要将输入数据转为矩阵,矩阵第一列为数据标签,使用libsvmwrite函数就可以成功转换。

网上有许多使用FormatDataLibsvm.xls工具的,但是又有人测试发现该工具只处理2000行一下数据,想要使用该工具的请参考

http://blog.csdn.net/kobesdu/article/details/8944851

。但我建议还是选择libsvmwrite函数进行libsvm格式转换。

void exit_with_help()

{

mexPrintf(

“Usage: libsvmwrite(‘filename’, label_vector, instance_matrix);\n”

);

}

使用libsvm时最好将instance_matrix归一化,避免过拟合。

  1. 使用实例

libsvm在工具包中已有示例数据heart_scale,可以直接测试。

[label_vector, instance_matrix] = libsvmread(‘heart_scale’)

libsvmwrite(‘heart_scale’, label_vector, instance_matrix)



版权声明:本文为u014772862原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。