SVM支持向量机和逻辑回归进行心音信号简单二分类
来源:互联网 发布:mysql 写函数 编辑:程序博客网 时间:2024/04/29 22:57
%%%本程序读取training-a中150个心音信号作为训练集,后150个心音信号作为测试数据,采用SVM支持向量机和逻辑回归分类器%进行心音信号的分类%%clear;clc;rng=[0 1 149 1];%训练 rng=[r1 c1 r2 c2]定义读取csv文件的行列始末段rng1=[150 1 299 1];%测试train_label=csvread('./training-a/REFERENCE.csv',0,1,rng);%读取训练标签for i=1:length(train_label) if train_label(i)<0 train_label(i)=2; endendtest_label=csvread('./training-a/REFERENCE.csv',150,1,rng1);%读取测试标签for i=1:length(test_label) if test_label(i)<0 test_label(i)=2; endendfigure();subplot(211);bar(test_label);%画出测试数据的正确分类标签%%%对原始数据进行特征提取,构建n维的训练数据矩阵,样本大小为150train_data=[];test_data=[];for i=1:9 ss=feature_extraction(strcat('./training-a/a000',num2str(i),'.wav')); train_data=[train_data;ss];endfor i=10:99 ss=feature_extraction(strcat('./training-a/a00',num2str(i),'.wav')); train_data=[train_data;ss];endfor i=100:150 ss=feature_extraction(strcat('./training-a/a0',num2str(i),'.wav')); train_data=[train_data;ss];end%对原始数据进行特征提取,构建n维的测试数据矩阵for i=151:300 ss=feature_extraction(strcat('./training-a/a0',num2str(i),'.wav')); test_data=[test_data;ss];end%%%SVM支持向量机分类器% Factor = svmtrain( train_data,train_label);% predict_label = svmclassify(Factor, test_data);% accuracy = length(find(predict_label == test_label))/length(test_label)*100;% accuracy% subplot(212);% bar(predict_label);%绘制预测矩阵与正确答案进行比较%逻辑回归Factor = mnrfit(train_data, train_label);Scores = mnrval(Factor, test_data);S1=Scores(:,1);S2=Scores(:,2);predict_label=[];for i=1:length(S1) if S1(i)<S2(i) predict_label=[predict_label;2]; else predict_label=[predict_label;1]; endendsubplot(212);bar(predict_label);accuracy = length(find(predict_label == test_label))/length(test_label)*100;accuracy
分类结果:
accuracy = 76
由于只采用了150个信号做训练集,训练好的分类器只有76%的预测率,心音信号来源于https://physionet.org/physiobank/database/challenge/2016/training.zip
REFERENCE.csv形式:
特征提取函数feature_extraction采用db6小波特征提取,函数代码如下:
function [ ss ] = feature_extraction(route )% [x,fs]=audioread('./training-a/a0001.wav');[x,fs]=audioread(route);x1=x(:,1); % 抽取第 1 声道level = 4;wname ='db6';%选取小波t=wpdec(x1,level,wname,'shannon');%小波分解% plot(t);t0=wprcoef(t,[3,0]);t1=wprcoef(t,[4,2]);t2=wprcoef(t,[4,3]);t3=wprcoef(t,[3,2]);t4=wprcoef(t,[4,6]);t5=wprcoef(t,[4,7]);t6=wprcoef(t,[1,1]);%构建特征向量s0=norm(t0);s1=norm(t1);s2=norm(t2);s3=norm(t3);s4=norm(t4);s5=norm(t5);s6=norm(t6);ss=[s0,s1,s2,s3,s4,s5,s6];%得到7维的特征向量% figure();% bar(ss); end
1 0
- SVM支持向量机和逻辑回归进行心音信号简单二分类
- 机器学习概念总结笔记(二)——逻辑回归、贝叶斯分类、支持向量分类SVM、分类决策树ID3、
- 分类和回归(二)-SVMs(支持向量机)
- 【机器学习】推导支持向量机SVM二分类
- 二分类支持向量机模型SVM知识点详解
- 逻辑回归、决策树和支持向量机(I)
- 逻辑回归、决策树和支持向量机(I)
- 逻辑回归、决策树和支持向量机(I)
- 逻辑回归、决策树和支持向量机的直观理解
- 逻辑回归、决策树和支持向量机(I)
- 逻辑回归、决策树和支持向量机(II)
- 逻辑回归、决策树和支持向量机(I)
- 逻辑回归和线性支持向量机之间的区别
- 支持向量机SVM(二
- 支持向量机(SVM)(二)
- 支持向量机SVM和支持向量回归SVR简介——原理方法
- 支持向量机(SVM)、支持向量回归(SVR)
- 支持向量机(SVM)、支持向量回归(SVR)
- c——头文件 源文件 预处理 编译 链接
- 读取xml文件中配置文件
- vue-cli安装过程遇到问题
- 获取apk的版本号versionCode apk的版本名称VersionName
- TFT LCD 学习笔记
- SVM支持向量机和逻辑回归进行心音信号简单二分类
- Android自定义控件之自定义组合控件(一)
- 2016年度总结
- 假装有内容~
- React Native动画研究与优化
- webp图标不显示问题小计
- DES3加解密问题
- X64位动态库,想改为静态库lib时,未指定MACHINE类型错误的解决方法fatal error LNK1112
- C语言实现的个人信息管理系统