神经网络的数据分类—语音特征信号识别
清空环境变量
clc
clear
数据的提取和预处理
%下载四类语音特征信号矩阵
load data1 c1
load data2 c2
load data3 c3
load data4 c4
%四个特征信号矩阵合成一个矩阵
data(1:500,:)=c1(1:500,:); data(501:1000,:)=c2(1:500,:); data(1001:1500,:)=c3(1:500,:); data(1501:2000,:)=c4(1:500,:);
%从1到2000间随机排序
k=rand(1,2000);
[m,n]=sort(k);
%从data中找出输入和输出
input=data(:,2:25);
output1 =data(:,1);
%把输出从1维变成4维
for i=1:2000
switch output1(i)
case 1
output(i,:)=[1 0 0 0];
case 2
output(i,:)=[0 1 0 0];
case 3
output(i,:)=[0 0 1 0];
case 4
output(i,:)=[0 0 0 1];
end
end
%随机提取1500个样本做为训练样本,500个样本作为预测样本
input_train=input(n(1:1500),:)'; output_train=output(n(1:1500),:)'; input_test=input(n(1501:2000),:)'; output_test=output(n(1501:2000),:)';
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train);
BP网络建立
%创建一个BP神经网络
net=newff(inputn,outputn,20);
net.trainParam.epochs=50;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004;
BP网络训练
net=train(net,inputn,outputn); BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
%网络预测输出
an=sim(net,inputn_test);
%网络输出反归一化
BPoutput=mapminmax('reverse',an,outputps);
结果
%根据网络输出找出数据属于哪类
for i=1:500
output_fore(i)=find(BPoutput(:,i)==max(BPoutput(:,i)));
end
%BP网络预测误差
error=output_fore-output1(n(1501:2000))';
%画出预测语音种类和实际语音种类的分类图
figure(1)
plot(output_fore,'r')
hold on
plot(output1(n(1501:2000))','b')
legend('预测语音类别','实际语音类别')
%画出误差图
figure(2)
plot(error)
title('预测误差')
k=zeros(1,4); %
%找出判断错误的分类属于哪一类
for i=1:500
if error(i)~=0
[b,c]=max(output_test(:,i));
switch c
case 1
k(1)=k(1)+1;
case 2
k(2)=k(2)+1;
case 3
k(3)=k(3)+1;
case 4
k(4)=k(4)+1;
end
end
end
%找出每类的个体和
kk=zeros(1,4);
for i=1:500
[b,c]=max(output_test(:,i));
switch c
case 1
kk(1)=kk(1)+1;
case 2
kk(2)=kk(2)+1;
case 3
kk(3)=kk(3)+1;
case 4
kk(4)=kk(4)+1;
end
end
%正确率
rightridio=(kk-k)./kk
rightridio =
0.7265 1.0000 0.9000 0.9291
BP神经网络背景:
BP(Back propagation)神经网络是一种多层前馈神经网络,该神经网络主要特点就是信号前向传递,误差反向反馈。具体来说,就是输入信号先前向传播到中间层节点,经过中间层节点激励函数转化后传播到输出节点,输出节点求和后即给出输出。BP网络的输出和实际的输出间的误差反传会中间层节点和权值来修正节点阀值和权值,从而使BP网络预测数值不断逼近真实数值。BP网络的基本结构如图1所示[ 以下有详细的BP网络理论知识..........]
语音特征信号识别背景:
语音特征信号识别是语音识别研究领域中的一个重要方面,其根本目的就是判断某种语音信号属于类别。语音特征信号是指用特定的算法把语音转变为特定的数学序列,语音特征信号识别既是用语音特征信号来判断该语音信号属于哪类。语音特征信号识别的方法很多,比较适合于BP网络求解,用训练数据对BP网络进行训练后,既可以用BP网络来根据语音特征信号判断该语音所属类别。
模型建立:
该处有完整的数学理论推导过程....
BP神经网络的数据分类—语音特征信号识别