基于SVM的数据分类预测——语音识别

本文介绍了如何使用支持向量机(SVM)对基于BP网络的语音信号进行识别,包括数据预处理、模型训练和预测过程,以及通过实例展示了测试集的分类准确性和错误分析。
摘要由CSDN通过智能技术生成

SVM是机器学习中的一种方法,在2011年前后深度学习爆发之前曾统治机器学习数十年。它实现简单,在很多情况下表现优秀,需要的数据量小,因此成为机器学习的经典方法之一。

数据:基于BP网络的语音识别-CSDN博客

%% 清空环境变量

close all;
clear;
clc;
format compact;

%% 数据提取

%下载四类语音信号

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,:);

%随机提取1500个样本为训练样本,500个样本为预测样本

%从1到2000间随机排序
 

k=rand(1,2000);
[m,n]=sort(k);

%输入输出数据

input=data(:,2:25);
output =data(:,1);
train=input(n(1:1500),:);
train_labels=output(n(1:1500),:);
test=input(n(1501:2000),:);
test_labels=output(n(1501:2000),:);


%% 数据预处理

% 数据预处理,将训练集和测试集归一化到[0,1]区间

[mtrain,ntrain] = size(train);
[mtest,ntest] = size(test);

dataset = [train;test];
% mapminmax为MATLAB自带的归一化函数
[dataset_scale,ps] = mapminmax(dataset');
dataset_scale = dataset_scale';

train = dataset_scale(1:mtrain,:);
test = dataset_scale( (mtrain+1):(mtrain+mtest),: );


%% SVM网络训练

model = svmtrain(train_labels, train, '-c 2 -g 1');

%% SVM网络预测

[predict_label, accuracy,predict_values] = svmpredict(test_labels, test, model);

%% 结果分析

% 测试集的实际分类和预测分类图

figure;
hold on;
plot(test_labels,'o');
plot(predict_label,'r*');
xlabel('测试集样本','FontSize',12);
ylabel('类别标签','FontSize',12);
legend('实际测试集分类','预测测试集分类');
title('测试集的实际分类和预测分类图','FontSize',12);
grid on;

%找出判断错误的分类属于哪一类

k=zeros(1,4);  
for i=1:500
    if test_labels(i,1)~=predict_label(i,1)
        c=test_labels(i,1);
        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
    c=test_labels(i,1);
    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;
disp('正确率')
disp(rightridio);

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
支持向量机(Support Vector Machine,SVM)是一种常用的数据分类预测算法。它的基本思想是找到一个最优的超平面,将不同类别的数据点尽可能地分开。 SVM是一种有监督学习算法,可以用于解决二分类和多分类问题。其主要步骤包括:数据预处理、特征选择、选择核函数、模型训练和预测。 首先,需要对数据进行预处理,包括数据清洗、缺失值处理和数据标准化等。然后,通过特征选择的方法,选取对分类结果影响较大的特征。 接下来,需要选择合适的核函数,用来将样本映射到高维空间,以使得数据在高维空间中更容易分开。常用的核函数有线性核、多项式核和高斯核等。 然后,根据选择的核函数,通过训练算法对模型进行训练。训练过程中,SVM会找到一组支持向量,它们是离超平面最近的样本点,用来划分不同类别的数据。 最后,可以使用训练好的模型进行预测。对于新的数据点,通过将其映射到高维空间,并根据其位置与超平面的关系,判断其所属的类别。 SVM数据分类预测中有着广泛的应用,例如文本分类、图像识别和生物信息学等领域。它在处理高维数据和非线性问题上表现出色,并且具有较好的泛化能力和鲁棒性。 总之,基于SVM数据分类预测是一种有效的方法,可以帮助我们对未知数据进行分类,从而更好地理解和分析数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值