今天整理资料时,发现了在学校时做的这个实验,当时整个过程过重偏向依赖分类器方面,而又很难对分类器性能进行一定程度的改良,所以最后没有选用这个方案,估计以后也不会接触这类机器学习的东西了,希望它对刚入门的人有点用。

SVM比较适合高维数据的二分类,本来准备对语音特征直接用SVM进行二分类,但是发现样本数据比较多,训练的2天都没有出收敛,最后想用VQ聚类的方法先抽取出具有代表性的语音,但是用这些代表性的训练集训练SVM分类器,效果还可以,用了一个下午就收敛了。识别结果还行,比较差的情况下,也有80%的准确率。

LibSVM是台湾大学林智仁设计的开发包:http://www.csie.ntu.edu.tw/~cjlin/

训练特征提取部分:

clc;
clear; train_feature0=[]; %A类特征
train_feature1=[]; %B类特征
%%%%%相关参数选取%%%%%
N=128;
ine = 1*10^(-3); %%%%%%%%%A类训练数据
root0='D:\model_train\train_orign';
list0=dir(root0);
list0(1:2)=[];
N0=length(list0);
for i=1:N0
file=[root0,'\',list0(i).name];
x=readwav(file);
[temp]=mfcc(x);
train_feature0=[train_feature0;temp];
disp(list0(i).name);
end
%%%%
[vector0,cent0]=VQ(train_feature0,N,ine);VQ聚类A类
%%%%
% for i=1:N
% train_feature=[train_feature;vector0(i).data(1:XQ,:)];
% end
% label0=ones(N*XQ,1);%文件标记 1 %%%%%%%%B类训练数据
root1='D:\model_train\train_tamper';
list1=dir(root1);
list1(1:2)=[];
N1=length(list1);
for j=1:N1
file=[root1,'\',list1(j).name];
x=wavread(file);
[temp]=mfcc(x);
train_feature1=[train_feature1;temp];
disp(list1(j).name);
end
%%%%%%%%%%%VQ聚类B类
[vector1,cent1]=VQ(train_feature1,N,ine);

模型训练与分类部分:

clc;clear;
%---------用SVM测试三种特征的准确率,单独检测,2012-3-19-------
addpath('svm-mat-2.89-3'); % add path with libsvm routines
display(datestr(now)); %------------------------装载训练数据----------------------------------------
load('train_feature.mat'); %语音特征训练数据
load('train_label.mat');%对应标签 load('test_feature.mat'); %用于归一化
%-------------直接指定参数-----------
G = 1/24; C = 1e8; %le
cmd=sprintf('-t 2 -g %.4e -c %.4e',G,C);
[train_scale,test_scale] = scaleForSVM_corrected(train_feature,test_feature,-1,1);% scale the training set and testing sets to [0,1]
model1=svmtrain(train_label,train_scale,cmd);% train the svm classifier 训练 按帧 save model1.mat model1;
save test_scale.mat test_scale;
clear;
load('model1.mat');
load('test_scale.mat');
%------------------------装载测试数据---------------------------------------- load('test_label.mat');%对应标签
load('test_file_frames.mat'); %帧级别
load('test_label_frame.mat');
%--------------------------------------------------------------------------
[predict_label,predict_accuracy_rate]=svmpredict(test_label_frame,test_scale,model1);% classify the testing set
N=length(test_file_frames);
temp1=0;
temp2=0; for i=1:N
temp2=temp2+test_file_frames(i);
temp1=temp2-test_file_frames(i)+1;
% zonghe=score(temp1:temp2);
same=ismember(predict_label(temp1:temp2),test_label_frame(temp1:temp2));
if sum(same)/test_file_frames(i)>0.5
predict_result(i)=test_label(i);
else
predict_result(i)=(~test_label(i));
end
end
predict_result=predict_result';
index=(predict_result==test_label);
num_correct=sum(index);
accuracy=num_correct/N;
fprintf('A类和B类综合 accuracy = %0.2f (%s%s%s)%s \n',accuracy,num2str(num_correct),'/',num2str(N),'(classification)');
display(datestr(now));
%%%%%%%%%%%%%%%%%%%A类准确率
index=(predict_result(1:200)==test_label(1:200));
num_z=sum(index);
accuracy=num_z/(N/2);
fprintf('A类 accuracy = %0.2f (%s%s%s)%s \n',accuracy,num2str(num_z),'/',num2str(N/2),'(classification)');
%%%%%%%%%%%%%%%%%%%B类准确率
index=(predict_result(201:400)==test_label(201:400));
num_f=sum(index);
accuracy=num_f/(N/2);
fprintf('B类 accuracy = %0.2f (%s%s%s)%s \n',accuracy,num2str(num_f),'/',num2str(N/2),'(classification)');

  

VQ结合SVM分类方法的更多相关文章

  1. Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

    转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...

  2. SVM 核方法

    在 SVM 中引入核方法便可使得 SVM 变为非线性分类器,给定非线性可分数据集 $\left \{ (x_i,y_i)\right\}_{i=1}^N$,如下图所示,此时找不到一个分类平面来将数据分 ...

  3. SGDClassifier梯度下降分类方法

    SGDClassifier梯度下降分类方法 这个分类器跟其他线性分类器差不多,只是它用的是mini-batch来做梯度下降,在处理大数据的情况下收敛更快 1.应用 SGD主要应用在大规模稀疏数据问题上 ...

  4. SVM-支持向量机(二)非线性SVM分类

    非线性SVM分类 尽管SVM分类器非常高效,并且在很多场景下都非常实用.但是很多数据集并不是可以线性可分的.一个处理非线性数据集的方法是增加更多的特征,例如多项式特征.在某些情况下,这样可以让数据集变 ...

  5. tensorflow实现基于LSTM的文本分类方法

    tensorflow实现基于LSTM的文本分类方法 作者:u010223750 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实 ...

  6. CSS规范 - 分类方法

    CSS文件的分类和引用顺序 通常,一个项目我们只引用一个CSS,但是对于较大的项目,我们需要把CSS文件进行分类. 我们按照CSS的性质和用途,将CSS文件分成“公共型样式”.“特殊型样式”.“皮肤型 ...

  7. SVM-支持向量机(一)线性SVM分类

    SVM-支持向量机 SVM(Support Vector Machine)-支持向量机,是一个功能非常强大的机器学习模型,可以处理线性与非线性的分类.回归,甚至是异常检测.它也是机器学习中非常热门的算 ...

  8. EcShop调用显示指定分类下的子分类方法

    ECSHOP首页默认的只有全部分类,还有循环大类以及下面小类的代码,貌似没有可以调用显示指定大类下的子分类代码.于是就有这个文章的产生了,下面由夏日博客来总结下网站建设过程中ECSHOP此类问题的网络 ...

  9. SVM分类与回归

    SVM(支撑向量机模型)是二(多)分类问题中经常使用的方法,思想比较简单,但是具体实现与求解细节对工程人员来说比较复杂,如需了解SVM的入门知识和中级进阶可点此下载.本文从应用的角度出发,使用Libs ...

随机推荐

  1. YOURPHP的分页完整版

    html代码 <?php print_r($ser['searchtype']);?> <select name="searchtype"> <opt ...

  2. js与php转换时间戳

    php时间:1368524732 js代码: function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleStri ...

  3. #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_8_0

    头文件处理 #import <UIKit/UIKit.h> #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_8_0 #else #imp ...

  4. 屌丝逆袭--Asp.net快速入门学习教程 第1晚

    本人屌丝一名,因工作原因,不能白天学习编程,所以只能做夜猫子学习编程,期待一天能逆袭成一名高帅富的技术大牛(靠,都想到流口水了........囧). 本教程记录本屌丝学习Asp.net的过程,大牛就飞 ...

  5. Python之路【第三篇】:Python基础(二)

    函数的理解 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 函数作用是你的程序有良好的扩展性.复用性. 同样的功能要是用3次以上的话就建议 ...

  6. 自定义layout中需要重写的方法

    Layout类中,有3个方法是必定会被依次调用: prepareLayout: 准备所有view的layoutAttribute信息 collectionViewContentSize: 计算cont ...

  7. “Transaction rolled back because it has been marked as rollback-only”

    spring的声明事务提供了强大功能,让我们把业务关注和非业务关注的东西又分离开了.好东西的使用,总是需要有代价的.使用声明事务的时候,一 个不小心经常会碰到“Transaction rolled b ...

  8. Linux静态库生成指南

    Linux静态库生成指南   Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...

  9. MEF搜索范围

    MEF对扩展组件的查找范围通常有三个: AssemblyCatalog:从某个程序集中查找. ApplicationCatalog:在应用程序所在的目录下查找. DirectoryCatalog:在某 ...

  10. [歪谈]我们该怎么正确面对"批评"

    这两天看到网上有类似这样的话题:遇到批评你是如何面对? 其实标题中没有“领导”,并不是专指:遇到“领导”批评你是如何面对? 在IT界(其他行业和领域就不谈了).         批评分三个层面: 1. ...