第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【情感识别】基于matlab GUI改进的KNN算法语音情感分类识别【含Matlab源码 354期】

【情感识别】基于matlab GUI改进的KNN算法语音情感分类识别【含Matlab源码 354期】

时间:2018-09-24 05:25:41

相关推荐

【情感识别】基于matlab GUI改进的KNN算法语音情感分类识别【含Matlab源码 354期】

一、 KNN算法简介

K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

1 定义

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,即由你的“邻居”来推断出你的类别.

2 距离公式

两个样本的距离可以通过如下公式计算,又叫欧式距离

3 KNN算法的步骤

(1)计算已知类别数据集中每个点与当前点的距离;

(2)选取与当前点距离最小的K个点;

(3)统计前K个点中每个类别的样本出现的频率;

(4)返回前K个点出现频率最高的类别作为当前点的预测分类。

4 KNN原理

5 KNN的优缺点

6 KNN性能问题

NN的性能问题也是KNN的缺点之一。使用KNN,可以很容易的构造模型,但在对待分类样本进行分类时,为了获得K近邻,必须采用暴力搜索的方式,扫描全部训练样本并计算其与待分类样本之间的距离,系统开销很大。

二、部分源代码

clc;close all;defcolor=[0,0,0];h_fig=figure(1);set(h_fig,'Menubar','name','语音情感识别系统 v1.0',...'Numbertitle','off',...'color',[0.9023 0.9074 0.8055]);h_text=uicontrol(h_fig,'style','text','unit','normalized',...'position',[0.0,0.0,1,1]);h_text1=uicontrol(h_fig,'style','text','unit','normalized',...'position',[0.0,0.85,0.25,0.05],'horizontal','left',...'string','请选择待检测wav文件:','fontsize',10,'ForegroundColor',defcolor);h_edit1=uicontrol(h_fig,'style','edit','unit','normalized',...'position',[0.28,0.80,0.5,0.1],'horizontal','left',...'fontsize',10, 'ForegroundColor',defcolor);h_push3=uicontrol(h_fig,'style','push','unit','normalized',...'position',[0.78,0.8,0.08,0.1],'horizontal','left',...'string','...','fontsize',20,'ForegroundColor',defcolor,'callback','getfile');h_push1=uicontrol(h_fig,'style','push','unit','normalized',...'position',[0.4,0.75,0.18,0.05],'horizontal','left',...'string','确定','fontsize',10,'ForegroundColor',defcolor,'callback','process');h_text3=uicontrol(h_fig,'style','text','unit','normalized',...'position',[0,0.5,0.28,0.1],'horizontal','left',...'string','传统KNN算法获得结果为:','fontsize',10,'ForegroundColor',defcolor);h_edit2=uicontrol(h_fig,'style','edit','unit','normalized',...'position',[0.28,0.5,0.3,0.1],'horizontal','left',...'fontsize',10,'ForegroundColor',defcolor);[y,fs]=wavread(filename);sound(y,fs)X3=mean(FunFre(y,fs));[X1,X2,X4]=TimePara(y);k=13;XA=[Aa Ah As X1];XE=[Ea Eh Es X2];XF=[Fa Fh Fs X3];XZ=[Za Zh Zs X4]; PA=mapzo(XA);PE=mapzo(XE);PF=mapzo(XF);PZ=mapzo(XZ);a=[PA(1:30);PE(1:30);PF(1:30);PZ(1:30)];h=[PA(31:60);PE(31:60);PF(31:60);PZ(31:60)];s=[PA(61:90);PE(61:90);PF(61:90);PZ(61:90)];x=[PA(91);PE(91);PF(91);PZ(91)];%%%传统KNN算法disp('使用传统KNN算法识别结果为:')A=oushi(a,x);H=oushi(h,x);S=oushi(s,x);set(h_edit2,'style','text');set(h_edit2,'string',judge(A,H,S,k));%%%%%%%改进算法disp('使用改进算法识别结果为:')B=mean([Aa' Ah' As' Ea' Eh' Es' Fa' Fh' Fs' Za' Zh' Zs']);A=reshape(B,3,4);O=reshape([Aa Ah As],30,3);for i=1:3for j=1:30OO(j,i)=(abs(O(j,i)-A(i,1))/A(i,1))^2;endendO=sqrt(sum(OO));P=reshape([Ea Eh Es],30,3);for i=1:3for j=1:30PP(j,i)=(abs(P(j,i)-A(i,2))/A(i,2))^2;endendP=sqrt(sum(PP));Q=reshape([Fa Fh Fs],30,3);for i=1:3for j=1:30QQ(j,i)=(abs(Q(j,i)-A(i,3))/A(i,3))^2;endendQ=sqrt(sum(QQ));R=reshape([Za Zh Zs],30,3);for i=1:3for j=1:30RR(j,i)=(abs(R(j,i)-A(i,4))/A(i,4))^2;endendR=sqrt(mean(RR));X=[O' P' Q' R'];for i=1:3for j=1:4V(i,j)=(sum(X(i,:))-X(i,j))/sum(X(i,:));endfunction [str]=judge(A,H,S,k)f=[A H S]; %将欧距三个个矩阵合并g=[A H];d=numel(f);c=[1:d]; %用来存放排序后的欧距c=lowtohigh(f,d);num1=0;%用来记录被判x类的次数num2=0;%用来记录被判y类的次数num3=0;for i=1:kfor j=1:dif (c(i)==f(j))if j<=numel(A)%如果选中的欧距出自x类num1=num1+1;elseif j>numel(g) %如果选中的欧距出自y类num3=num3+1;elsenum2=num2+1; endendj=j+1;endi=i+1;end if(num1>num2&num1>num3)w=0;elseif(num2>num1&num2>num3) w=1;elseif(num3>num1&num3>num2) w=2;endend

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,.

[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。