matlab中怎么使用svm,关于如何在Matlab中如何使用libsvm
这里给出加州住房的例子,大家转载时请尊重版权,本例已列入新书《支持向量机的工程应用》,李应红,尉询楷编著,新书已正式开编,希望大家多提意见,
获得统计参数
for ii=1:100
cal_housing_data;
start=cputime;
%!svmtrain -s 0 -t 2 -g num2str(sigma) training.dat model.dat
dos(['svmtrain -s 3 -c 500 cal_housing_train.dat model.dat'])
train_time(ii)=cputime-start
params = libsvm2mat('model.dat');
No_sv(ii)=params.total_sv
dos(['svm-predict cal_housing_train.dat model.dat validation.txt'])
load validation.txt;
train_accuracy(ii)=sqrt(validation(end-1))
start1=cputime;
dos(['svm-predict cal_housing_test.dat model.dat validation1.txt'])
load validation1.txt
test_time(ii)=cputime-start1
test_accuracy(ii)=sqrt(validation1(end-1))
clear validation validation1 start start1;
end
av_train_time=mean(train_time);
dev_train_time=std(train_time);
av_test_time=mean(test_time);
dev_test_time=std(test_time);
av_train_accuracy=mean(train_accuracy);
dev_train_accuracy=std(train_accuracy);
av_test_accuracy=mean(test_accuracy);
dev_test_accuracy=std(test_accuracy);
av_No_sv=mean(No_sv);
save test1.mat;
%%%%%%%%%%%%%%%%%%%%
子程序
function params = libsvm2mat(fname)
%LIBSVM2MAT LibSVM to MATLAB conversion
% usage:
% params = libsvm2mat(model_file_name)
% or if you have a data file you would like to load
% params = libsvm2mat(data_file_name)
fid = fopen(fname,'r');
if (fid == -1), error(sprintf('%s not found!',fname')); end
while 1,
tline = fgetl(fid);
if ~ischar(tline), break, end
I = [findstr(tline,' ') length(tline)+1];
switch tline(1(1)-1),
case 'total_sv',
params.total_sv = sscanf(tline(I(1):end),'%f');
otherwise, % assume this to be a data file, double check if its true:
if isempty(str2num(tline(1(1)-1))),
disp([tline(1(1)-1) ' ignored!']);
else
k = 0;
while 1,
k = k + 1;
if ~ischar(tline), break, end
tline(find(tline == ':')) = ' ';
values = sscanf(tline, '%f')';
% params.y(k,1) = values(1);
%params.X(k, values(2:2:end)) = values(3:2:end);
tline = fgetl(fid);
end
end
end
end
fclose(fid);
%%%%%%%%%%%%%%%%%%%%%%%%%%
数据格式的生成
function cal_housing_data
%
%This file is used to load boston original data and generate random
%validation and test data.
% Created by skyhawk,2004.7.24
%
% function califonia_data
% %
%This file is used to load boston original data and generate random
%validation and test data.
% Created by skyhawk,2004.7.24
%
load cal_housing.data;
who
dataset=cal_housing;
rand_sequence=randperm(size(dataset,1));
temp_dataset=dataset;
dataset=temp_dataset(rand_sequence, ;
%预处理
for i=1:size(dataset,2)
if max(dataset(:,i))~=min(dataset(:,i))
dataset(:,i)= (dataset(:,i)-min(dataset(:,i)))/(max(dataset(:,i))-min(dataset(:,i)));
% dataset(:,i)=(dataset(:,i)-mean(dataset(:,i)))/(std(dataset(:,i)));
else
dataset(:,i)=0;
end
end
P1=dataset(1:8000,1:size(dataset,2)-1);
T1=dataset(1:8000,size(dataset,2));
%Obtain Random Validation Matrix
X=dataset(8001:size(dataset,1),1:size(dataset,2)-1);
Y=dataset(8001:size(dataset,1),size(dataset,2));
fid1 = fopen('cal_housing_train.dat','w');
for i=1:size(P1,1)
fprintf(fid1,'%2.8f ',T1(i,1));
for j=1:size(P1,2)
fprintf(fid1,' %d:%2.8f',j, P1(i,j)); % for SVM
end
fprintf(fid1,'\n');
end
fclose(fid1);
fid1 = fopen('cal_housing_test.dat','w');
for i=1:size(X,1)
fprintf(fid1,'%2.8f ',Y(i,1));
for j=1:size(X,2)
fprintf(fid1,' %d:%2.8f',j, X(i,j)); % for SVM
end
fprintf(fid1,'\n');
end
fclose(fid1);
%%%%%%%%%%
加州的数据网上查的到,大家可以验证
matlab中怎么使用svm,关于如何在Matlab中如何使用libsvm相关推荐
- html中写自增数字,WPS word中数字怎么自增 如何在word中设置数字的千位分隔符
选中某行,列或者某一部分,选择菜单栏的"行和列"->"填充"选项,选择序列选项. 在弹出的窗口中设置你需要的选项. WPS文字怎样自动增加数字 如何在WP ...
- 画出序列的图形matlab,江恩时间序列怎么画,如何在matlab上绘制基于时间序列的图形...
Q1:如何在matlab上绘制基于时间序列的图形 ..flag.. Q2:怎样用spss软件画出时间序列图 第一步:定义时间.步骤:数据-定义日期.有许多种日期模式,依实际情况定. 第二步:创建模型. ...
- shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?
每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...
- html中看到php代码_如何在HTML中嵌入PHP代码
如何在HTML中嵌入PHP代码 对于一个有经验的 PHP Web 开发者,在HTML中嵌入PHP代码是一件非常容易的事情.但是对于刚开始接触 PHP 编程语言的新手这就是一个问题.下面是小编为大家带来 ...
- 在dw中如何调试html代码,如何在 Dreamweaver 中优化和调试代码 - Dreamweaver 用户指南...
了解如何在 Dreamweaver 中清除代码.检查浏览器兼容性.验证 XML 文档并使页面符合 XHTML 规范. 清理代码 您可以自动删除空标签,合并嵌套 font 标签,以及通过其它方法改善杂乱 ...
- ai中如何插入签名_如何在PDF中插入一个或多个空白页?
在编辑或修改PDF文档时,一般都需要新增空白页后再添加文本或图片等内容,那么如何在PDF中插入一个或多个空白页呢? 首先打开极速PDF编辑器,或打开需要编辑的PDF文档后,点击右上角"文档& ...
- eval在python中是什么意思_如何在Python中使用eval ?
Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...
- python中while语句是_如何在Python中使用while语句[适合初学者]
while语句是重复循环的语句,那么如何用Python编写,下面Gxl网就带领大家来学习一下Python中使用while语句.[推荐阅读:Python视频教程] 一:什么是while语句?Python ...
- thinkphp中如何使用PHP函数,如何在ThinkPHP中使用函数进行回调
如何在ThinkPHP中使用函数进行回调 发布时间:2020-12-23 15:11:45 来源:亿速云 阅读:85 作者:Leah 本篇文章为大家展示了如何在ThinkPHP中使用函数进行回调,内容 ...
最新文章
- CentOS 6.2下log4cplus的使用
- eclipse创建springboot项目_创建一个 Spring Boot 项目,你会几种方法?
- jquery中动态效果
- OpenCV图像增强(一)——多尺度视网膜增强
- nginx动静分离配置_nginx动静分离实战
- 1.Jenkins 在windows下的安装与配置
- CTF——PHP审计——变量覆盖
- 全面预测我国量子通信市场规模及发展趋势
- H5页面随机数字键盘支付页面
- 2014全国计算机二级ms office,2014计算机二级MS Office真题及答案
- python中如何比较两个列表_python中如何比较两个列表
- 英语国家的学生学语法么?_纪念国家语法日
- maven的java web项目启动找不到Spring ContextLoaderListener的解决办法
- (50)Vue Router插件介绍
- java之的读取文件大全
- Atitit 概念:数据、信息、知识 目录 1. 艾提拉提出的 信息金字塔 数据 信息 知识 智慧	1 1.1. 洞见级别金字塔 数据 信息 知识	2 1.2. 数据 信息 知识韦恩图	3 1
- 酒店客房管理系统安排 Java项目 毕业设计项目不用愁
- 如何改写(paraphrase)英文句子?
- 去除WordPress网站链接中“category”的四种方法
- 拼车小程序的市场应用与外包开发的建议