libsvm的数据格式及制作

时间:2023-02-16 09:41:32

1、libsvm数据格式

libsvm使用的训练数据和检验数据文件格式如下:

 [label] [index1]:[value1] [index2]:[value2] …

 [label] [index1]:[value1] [index2]:[value2] …

label  目标值,就是说class(属于哪一类),就是你要分类的种类,通常是一些整数。

index 是有顺序的索引,通常是连续的整数。就是指特征编号,必须按照升序排列

value 就是特征值,用来train的数据,通常是一堆实数组成。

即:

目标值   第一维特征编号:第一维特征值   第二维特征编号:第二维特征值 …

目标值   第一维特征编号:第一维特征值   第二维特征编号:第二维特征值 …

……

目标值   第一维特征编号:第一维特征值   第二维特征编号:第二维特征值 …

例如:5 1:0.6875 2:0.1875 3:0.015625 4:0.109375

表示训练用的特征有4维,第一维是0.6875,第二维是0.1875,第三维是0.015625,第四维是0.109375  目标值是5

注意:训练和测试数据的格式必须相同,都如上所示。测试数据中的目标值是为了计算误差用

2、libsvm数据格式制作

该过程可以自己使用excel或者编写程序来完成,也可以使用网络上FormatDataLibsvm.xls来完成。FormatDataLibsvm.xls使用说明:

a.先将数据按照下列格式存放(注意label放最后面):

value1 value2 … label

value1 value2 … label

…

value1 value2 … label

b.然后将以上数据粘贴到FormatDataLibsvm.xls中的最上角单元格,接着工具->宏->执行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。

当然最方便的还是用程序生成,我这里有一个提取指定文件夹内各类样本文件夹内的图片的lbp特征值,并组织成libsvm所需的数据格式,写入txt文件中的程序:

/*Function:int prepareFeatsData(string samples_path, string outfile, char* class_samples, uchar* char_class, int nclass, string extens)
Features:
对指定的样本(数字和字母)的路径下的各个指定的样本文件进行特征提取,
连同类编号依次存入outfile指定文件中。
Attention:
注意_finddata_t结构体和_findfirst函数的用法
in-parameter:
samples_path:所有样本归属的文件夹
outfile:提取特征后写入的文件
class_samples:各个样本的文件夹标记
char_class:各样本的类别标记
nclass:有多少类样本
extens:样本文件的后缀扩展名(例如:"*.png")
out-parameter:
Return : 处理的样本总数
Author: Mengjia Date:2017-1-5 16:05:47
*/
int prepareFeatsData(string samples_path, string outfile, char* class_samples, uchar* char_class, int nclass, string extens)
{
int itatol = ;
FILE *fp;
fp = fopen(outfile.c_str(), "w+"); //train_samples\\train_lbp.txt
long hFile;//int nn=0;
for (int nsamp = ; nsamp < nclass; nsamp++)
{
string cur_folder = samples_path;
cur_folder += '\\';
cur_folder += class_samples[nsamp];//样本的文件夹标记
cur_folder += '\\';
string findfile = cur_folder;
findfile += extens;//所要寻找的文件格式全路径 struct _finddata_t img_file; if ((hFile = _findfirst(findfile.c_str(), &img_file)) == -1L)//"rawdata/*.png"
{
printf("no %s files in directory :%s\n", extens.c_str(), findfile.c_str());
//printf(findfile.c_str());
}
do
{
string filename = cur_folder;
filename += img_file.name;
IplImage* pImg = cvLoadImage(filename.c_str(), CV_LOAD_IMAGE_UNCHANGED);
if (pImg)
{ //nn++;
itatol++;
IplImage* pBImg = alignmentImg(pImg);
IplImage* standarImg = sizeNormalization(pBImg, , );
int scale_flag = SCALE_LBP_FEATURES;
CvMat* lbp_feats = LBP_features(standarImg, , , , scale_flag); if (scale_flag == SCALE_LBP_FEATURES)
{
double*pData = (double*)(lbp_feats->data.db);
fprintf(fp, "%d ", char_class[nsamp]); //写入样本类别 for (int i = ; i < lbp_feats->cols * lbp_feats->rows; i++)
{
if (pData[i] != .)
fprintf(fp, "%d%s%g ", i + , ":", pData[i]); //按格式写入特征
} fprintf(fp, "\t\n");
}
else
{
uchar*pData = (uchar*)(lbp_feats->data.ptr);
fprintf(fp, "%d ", char_class[nsamp]); //写入样本类别 for (int i = ; i < lbp_feats->cols * lbp_feats->rows; i++)
{
if (pData[i] != .)
fprintf(fp, "%d%s%d ", i + , ":", pData[i]); //按格式写入特征
} fprintf(fp, "\t\n");
} cvReleaseMat(&lbp_feats);
cvReleaseImage(&pBImg);
cvReleaseImage(&standarImg);
cvReleaseImage(&pImg);
}
} while (_findnext(hFile, &img_file) == );
_findclose(hFile);
}
fclose(fp);
printf("total samples = %d\n", itatol);
return itatol;
}

以上。

libsvm的数据格式及制作的更多相关文章

  1. libSVM的数据格式

    首先介绍一下 libSVM的数据格式 Label 1:value 2:value -. Label:是类别的标识,比如上节train.model中提到的1 -1,你可以自己随意定,比如-10,0,15 ...

  2. 在python中的使用Libsvm

    http://blog.csdn.net/pipisorry/article/details/38964135 LIBSVM是*大学林智仁(LinChih-Jen)教授等开发设计的一个简单.易于使用 ...

  3. Libsvm Java

    在java环境下用Libsvm包解决一个多分类问题. 1.将训练数据和测试数据按照libsvm的数据格式存放 可以写程序直接构造,libsvm的数据格式如下 Label 1:value 2:value ...

  4. LibSVM学习详细说明

    代码文件主要针对Matlab进行说明,但个人仍觉得讲解的支持向量机内容非常棒,可以做为理解这一统计方法的辅助资料; LibSVM是*林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量 ...

  5. Python下的LibSVM的使用

    突然觉的笔记真的很重要,给自己省去了很多麻烦,之前在Python 3 中装过libsvm 每一步都是自己百度上面搜寻的,花费了很长时间,但是并没有记录方法.这次换了电脑,又开始重新搜寻方法,觉得太浪费 ...

  6. 关于印发利用DEM确定耕地坡度分级技术规定(试行)的通知

    下载:http://files.cnblogs.com/files/gisoracle/%E5%88%A9%E7%94%A8DEM%E7%A1%AE%E5%AE%9A%E8%80%95%E5%9C%B ...

  7. FM算法&lpar;二&rpar;:工程实现

    主要内容: 实现方法 Python实现FM算法 libFM   一.实现方法 1.FM模型函数 变换为线性复杂度的计算公式: 2.FM优化目标 根据不同的应用,FM可以采用不同的损失函数loss fu ...

  8. SVM支持向量机推导,工具介绍及python实现

    支持向量机整理 参考: Alexandre KOWALCZYK大神的SVM Tutorial http://blog.csdn.net/alvine008/article/details/909711 ...

  9. Orange的数据挖掘工具入门使用

    Orange的数据挖掘工具入门使用 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach ...

随机推荐

  1. Shell入门教程:流程控制(4)case 条件判断

    case的语法结构: case 待测项 in 样式串1] 命令区域1 ;; (样式串2) 命令区域2 ;; 样式串3) 命令区域3 ;; *) 命令区域 ;; esac 命令区域,可以是单一指令或多行 ...

  2. EditText 自动格式化电话电话号码

    需要格式化的格式为:xxx xxxx xxxx 有两种方式:1.为监听当前输入的长度,当长度为第四位,九位的时候,在原内容上追加空格.(from *)2.每次输入后,格式化当前 ...

  3. 【读书笔记】iOS-写代码注意事项

    一,我是尽早和经常编译的强烈支持者.通常,在写完每个方法或有点难度的代码后,都要尝试进行构建.这是一个好习惯,因为如果在上次成功编译以来添加的代码量很小,那么可以非常容易地缩小编译错误范围.这个方法还 ...

  4. PHP中&dollar;&lowbar;FILES的使用及注意事项

    $_FILES: 经由 HTTP POST 文件上传而提交至脚本的变量.类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用).$_FILES数组内容如下: $_FILES['m ...

  5. 2014-08-29 Last Day

    今天实在吾索实习的第38天,也是这个暑假在吾索实习的最后一天. 这天里,并有做过多的新知识的学习,而是对先前的BBS系统进行优化,从外观的优化到每一行每一句代码的优化,希望能系统有更高的效率.虽说,暑 ...

  6. java学习一目了然&mdash&semi;&mdash&semi;异常必知

    java学习一目了然--异常必知 我们只要学java,异常肯定非常熟悉,该抛的时候抛一下就行.但是这其中还有点小细节需要注意.就用这个小短篇来说一下异常处理中的小细节吧. 异常处理 RuntimeEx ...

  7. Spring-----事务配置的五种方式

    转载自:http://blog.csdn.net/hekewangzi/article/details/51712821

  8. logstash 抓取IIS日志文件写入Elasticsearch

    如果需要对IIS日志进行分析可以使用logstash从文件中抓取出来进行分析: 输入部分: input { file { type => "iis_log_monitor" ...

  9. Qt ------ 添加某个功能,比如(QSerialPort)注意事项

    添加某个功能,比如(QSerialPort),不仅需要保护头文件 还需要在.pro文件内添加 QT += serialport

  10. MiniHook研究

    git hub 地址: https://github.com/RaMMicHaeL/minhook