libsvm的数据格式及制作

2024-08-29 15:58
文章标签 制作 数据格式 libsvm

本文主要是介绍libsvm的数据格式及制作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 … labelvalue1 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 = 0;FILE   *fp;fp = fopen(outfile.c_str(), "w+"); //train_samples\\train_lbp.txtlong hFile;//int nn=0;for (int nsamp = 0; 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, 32, 64);int scale_flag = SCALE_LBP_FEATURES;CvMat* lbp_feats = LBP_features(standarImg, 8, 8, 4, scale_flag);if (scale_flag == SCALE_LBP_FEATURES){double*pData = (double*)(lbp_feats->data.db);fprintf(fp, "%d ", char_class[nsamp]); //写入样本类别 for (int i = 0; i < lbp_feats->cols * lbp_feats->rows; i++){if (pData[i] != 0.)fprintf(fp, "%d%s%g ", i + 1, ":", pData[i]);   //按格式写入特征
                    }fprintf(fp, "\t\n");}else{uchar*pData = (uchar*)(lbp_feats->data.ptr);fprintf(fp, "%d ", char_class[nsamp]); //写入样本类别 for (int i = 0; i < lbp_feats->cols * lbp_feats->rows; i++){if (pData[i] != 0.)fprintf(fp, "%d%s%d ", i + 1, ":", pData[i]);   //按格式写入特征
                    }fprintf(fp, "\t\n");}cvReleaseMat(&lbp_feats);cvReleaseImage(&pBImg);cvReleaseImage(&standarImg);cvReleaseImage(&pImg);}} while (_findnext(hFile, &img_file) == 0);_findclose(hFile);}fclose(fp);printf("total samples = %d\n", itatol);return itatol;
}
复制代码

 

以上。


https://www.cnblogs.com/codingmengmeng/p/6254325.html

这篇关于libsvm的数据格式及制作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118303

相关文章

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

LIBSVM简介

LIBSVM简介 支持向量机所涉及到的数学知识对一般的化学研究者来说是比较难的,自己编程实现该算法难度就更大了。但是现在的网络资源非常发达,而且国际上的科学研究者把他们的研究成果已经放在网络上,免费提供给用于研究目的,这样方便大多数的研究者,不必要花费大量的时间理解SVM算法的深奥数学原理和计算机程序设计。目前有关SVM计算的相关软件有很多,如LIBSVM、mySVM、SVMLight等,这些

libsvm在matlab中的使用方法

原文地址:libsvm在matlab中的使用方法 作者: lwenqu_8lbsk 前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C的程序,应该不能。没想到今天又有人问道,难道matlab真的能运行libsvm。我到官方网站看了下,原来,真的提供了matlab的使用接口。 接口下载在: http://www.csie.ntu.edu.

LibSVM学习(六)——easy.py和grid.py的使用

我们在“LibSVM学习(一)”中,讲到libSVM有一个tools文件夹,里面包含有四个python文件,是用来对参数优选的。其中,常用到的是easy.py和grid.py两个文件。其实,网上也有相应的说明,但很不系统,下面结合本人的经验,对使用方法做个说明。        这两个文件都要用python(可以在http://www.python.org上下载到,需要安装)和绘图工具gnup

LibSVM学习(五)——分界线的输出

对于学习SVM人来说,要判断SVM效果,以图形的方式输出的分解线是最直观的。LibSVM自带了一个可视化的程序svm-toy,用来输出类之间的分界线。他是先把样本文件载入,然后进行训练,通过对每个像素点的坐标进行判断,看属于哪一类,就附上那类的颜色,从而使类与类之间形成分割线。我们这一节不讨论svm-toy怎么使用,因为这个是“傻瓜”式的,没什么好讨论的。这一节我们主要探讨怎么结合训练结果文件

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系

OpenStack镜像制作系列2—Windows7镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系列

OpenStack镜像制作系列1—环境准备

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作