C++生成libsvm训练使用数据文件格式

在使用svm的时候,libsvm无疑是一大利器,有了它,svm的应用简直是手到擒来啊!

那么问题来了,生成libsvm数据格式文件哪家强?

当然使用FormatDatalibsvm.xls这个是so easy了,however在一个程序中如何实现自己调用FormatDatalibsvm.xls来生成文件,我不会啊!

为了把在一个系统中通过特征提取得到目标的特征向量转化成libsvm能使用的格式,就自己动手丰衣足食吧!

下面是这个简单的小程序:

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>  //使用istringstream时需要包含该文件

using namespace std;
using std::vector;

int main()
{

	struct featureVector{
		string label;
		vector<string> values;
	};
	string line, word , buff;                  //分别保存来自文件的一行和一个单词
	string inAdress, outAdress;
	cout << "input the infile address"<< endl;
	cin >> inAdress;
	cout << "input the outfile address" << endl;
	cin >> outAdress;
	ifstream infile(inAdress);//格式如"D://t.txt"
	ofstream outfile(outAdress);//格式如"D://tt.txt"
	vector<featureVector> objectPic;    //保存来自文件的所有记录

	while (getline(infile, line)){

		int i = 0;
		featureVector info;             //创建一个保存记录数据的对象
		istringstream record(line);     //将记录绑定在刚刚读入的行
		record >> info.label;           //读取label
		while (record >> word)          //读取特征向量数据
		{
			if (i != 0)                //每行的第一个为标签,不用序号
			{
				buff = i + '0';    //values是一个string型的vector,所以要将i转换一下类型
				info.values.push_back(buff);
				info.values.push_back(":");
				info.values.push_back(word);   //保持它们
			}
			i++;
		}
		objectPic.push_back(info);      //将此记录追加到objectPic的末尾
	}
	for (const auto &entry : objectPic){    //对objectPic中的每一项
		int j = 0;
		outfile << entry.label;
		for (const auto &nums : entry.values) {

			if (j%3 == 0)          //在每一个向量的值后面才需要加上空格
				outfile << " ";
			outfile << nums;
			j++;
		}
		outfile << "\n";     //一条记录输出完后换行
	}
	getchar();
	return 0;
}

原始目标提取的数据如:
1 23 44 56 89 33
0 34 55 98 12 78
1 19 40 60 93 35

则得到的数据如:
1 1:44 2:56 3:89 4:33
0 1:55 2:98 3:12 4:78
1 1:40 2:60 3:93 4:35





时间: 2024-11-08 21:33:15

C++生成libsvm训练使用数据文件格式的相关文章

Matlab生成二类线性可分数据

%% 生成二类线性可分数据 function [feature, category]=generate_sample(step,error) aa=3; %斜率 bb=3; %截距 b1=1; rr =error; s=step; x1(:,1) = -1:s:1; n = length(x1(:,1)); x1(:,2) = aa.*x1(:,1) + bb + b1 + rr*abs(randn(n,1)); y1 = -ones(n,1); x2(:,1) = -1:s:1; x2(:,2

fastjson生成和解析json数据,序列化和反序列化数据

本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) 2.通过一个android程序测试fastjson的用法. fastjson简介: Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack

数据库生成脚本,架构+数据

简介 通过数据生成数据库架构.数据或架构和数据脚本,方便对数据库和数据的备份和迁移 步骤 1. 数据库右键-->任务-->生成脚本 2. 下一步-->选择需要备份的表 3. 下一步-->高级,选择你需要备份的类型 4. 选择合适的路径和名称,下一步即可 5.生成的脚本如下

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文: 默认情况下如下图 Y轴并不是从0开始,这样折现图的幅度会很大,不是正常的幅度,解决办法如下, 示例代码: window.onload = function () { var ctx = document.getElementById("canvas").getContext("2d"); window.myLine = new Chart(ctx).Line(lineChartDat

百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。

百度为何开源深度机器学习平台? 有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举. 5月20日,百度在github上开源了其深度机器学习平台.此番发布的深度机器学习开源平台属于"深盟"的开源组织,其核心开发者来自百度深度学习研究院(IDL),微软亚洲研究院.华盛顿大学.纽约大学.香港科技大学,卡耐基·梅陇大学等知名公司和高校. 通过这一开源平台,世界各地的开发者们可以免费获得更优质和更容易使用的分布式机器学习算法源码,

如何使用《DB 查询分析器》高效地生成旬报货运量数据

如何使用<DB 查询分析器>高效地生成旬报货运量数据 马根峰                    (广东联合电子服务股份有限公司, 广州 510300) 1      引言   中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本<DB 查询分析器>.英文版本<DB Query Analyzer>.它具有强大的功能.友好的操作界面.良好的操作性.跨越各种数据库平台乃至于EXCEL和文本文

数据库生成带框架、数据的脚本和还原数据库

我们在进行项目的过程中肯定需要做维护或者重构,这时我们要面对的就是别人的系统,如果前任是比较细心的人还好,他会将所有需要的信息都给你准备好,但是万一遇到粗心的前任的话就不好说了,最最可能的情况就是有代码,然后就没有然后了...... 众所周知我们做软件需要的是三项:代码.文档和数据库,往往人们只注重代码的实现而忽视了其他两项,数据库还好说毕竟我们会发布到服务器上,文档就难说了,所以提醒广大的工程师们,一定要将文档记在心中. 这篇文章就是这么来的--当被分到整理维护某个系统时发现数据库不在给的文件

音频数据文件格式(PCM,WAV,MIDI)简记

PCM(Pulse Code Modulation):脉冲编码调制 把声源数据按一定的频率进行脉冲调制进行存储的数据格式,简单来说就是对模拟声音信号的数字 转换. WAV WAV是一种无损音频数据格式.WAV符合RIFF规范.符合RIFF规范的文件可用于存储 音频视频交错格 式数据(.AVI) .波形格式数据(.WAV) .位图格式数据(.RDI) .MIDI格式数据(.RMI) .调色板格 式(.PAL) .多媒体电影(.RMN) .动画光标(.ANI) .其它RIFF文件,RIFF包含的数据

【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp

一.本人环境描述      1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0      2.Linux为centos6.5 32位,安装在Oracle VM VirtualBox虚拟机上      3.win7上装有ftp服务 二.功能实现描述      用shell的crontab命令定时执行某个.sh文件,此文件的功能已实现生成oracle表的数据到本地txt文件,并上传到ftp,必要时可记录执行日志. 三.步骤      1.在centos中安装orac