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算法(二):工程实现

    主要内容: 实现方法 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. SharePoint 2013 Create taxonomy field

    创建taxonomy field之前我们首先来学习一下如果创建termSet,原因是我们所创建的taxonomy field需要关联到termSet. 简单介绍一下Taxonomy Term Stor ...

  2. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  3. Oracle --> Vertica 数据类型转换规则

    需求:在Vertica数据库上建表,表结构来源于原Oracle数据库,故需要转换成Vertica数据库库表结构.   实际转换操作需要评估源库用到的所有数据类型和数据本身特性. 下面是总结的某场景下的 ...

  4. android使用PullToRefresh实现上拉加载和下拉刷新效果

    其实很早前就在博客园中也写过官方的下拉刷新控件SwipeRefreshLayout,但是这个控件仅仅支持下拉刷新,用起来还算可以.然而在我们实际开发应用中,很多地方都不止有下拉刷新,而且还有上拉加载的 ...

  5. 你真的会玩SQL吗?Case也疯狂

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  6. php内核分析(四)-do_cli

    这里阅读的php版本为PHP-7.1.0 RC3,阅读代码的平台为linux # main 把剩下的代码增加了下注释全部贴出来了(这个是简化后的main函数,去掉了一些无关紧要的代码段): int m ...

  7. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数

    函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数\(f(x) = x^2+x\),并没有指定 ...

  8. react-native的tabbar和navigator混合使用

    前段时间搭建项目使用了navigator和react-native-tab-navigator,现在我教大家搭建一个通用的简单框架. 先把几张图贴在这里,这就是我们今天要搭建的东西,别看页面简单,但是 ...

  9. spring mvc 和spring security配置 web.xml设置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmln ...

  10. java基础知识总结(1)

    定义类: 访问修饰符 class 类名{ }   访问修饰符如:public .priate是可选的 class是声明类的关键字 按照命名规范,类名首字母大写   例:创建“人”类,关键代码: pub ...