图片缩略图

心声分类器

版本1.6.0.0(7.88 MB) Bernhard Suhm
在机器学习电子书中解释的心音分类演示,但现在扩展到演示小波散射
4.7
23日评级

113下载

更新2019年10月16日

视图版本历史

查看许可证

本次提交提供了(即将发布的)关于完整机器学习工作流的电子书中解释的代码。基于PhysioNet 2016挑战的心音记录,我们开发了一个模型,将心音分为正常和异常,并部署在一个原型(心脏)筛选应用程序中。工作流程说明:
1)使用数据存储有效地从多个文件夹读取大量数据文件
2)利用信号处理、小波、统计等工具进行特征提取
3)使用ClassificationLearner应用程序交互式训练、比较和优化分类器,无需编写任何代码
4)以错误分类成本编程培训集合分类器
5)应用自动特征选择来选择相关特征的较小子集
6)执行C代码生成,部署到嵌入式系统
7)应用小波散射自动提取特征,优于人工设计的特征

引用作为

Bernhard Suhm(2021)。心声分类器(//www.tatmou.com/matlabcentral/fileexchange/65286-heart-sound-classifier),Matlab中央文件交换。检索到

意见及评分(51的)

dhruvi辛格

Bernhard Suhm

嗨Yoana,
看起来信号文件的数据存储不符合extractFeatures所期望的字段,它需要将实际的信号数据存储在一个名为“data”的字段中,这个字段必须在您的数据存储中丢失。我建议你阅读创建(音频)数据存储(//www.tatmou.com/help/audio/ref/audiodatastore.html.).

Yoana古斯曼

这是一个很棒的机器学习教程/例子!为了学习的目的,我一直试图在脚本中实现我自己的数据,看看代码是如何工作的,但在“Preprocess data”步骤中,我一直得到这个错误:
“使用'提取物品(第27行)错误
引用不存在的字段'data'。”
我也不知道怎么了我查看了'extractFeatures'函数/脚本,在第27行,我试图改变'data'为'data',但它没有修复它。你知道可能出了什么问题吗?

谢谢,
Yoana

约翰·纳瓦罗

你好,我想知道函数spectral_entropy和它与命令pentropy的区别

Diego GUEDES DE OLIVEIRA

你好,

你们们正试图解释机器学习如何以非常好的方式工作,我非常感激。但是,该脚本在“访问和探索数据”中工作非常好,“频域中的信号看起来像什么?”。
在下一步,“准备读取数据到内存”,我得到一个错误说:
"使用fileDatastore出错(第226行)
无法找到匹配:C:…path…的文件或文件夹
我想知道你们知不知道怎么修好它。

诚挚地,

Bernhard Suhm

你可以通过bsuhm@mathworks.com找到我

巴里斯Unver写道

谢谢你的伟大工作。我试图通过使用Android块和Simulink将模型部署到移动设备中,但我遇到了一些问题。金宝app我可以离线联系你(通过电子邮件)吗?你有官方低端电子邮件吗?

Bernhard Suhm

大卫·摩尔:更多细节请线下联系我。可能是您不小心将整个导出模型传递给代码生成,而不仅仅是分类对象。或者您可能创建了一个非常大的模型,一些大小限制适用于代码生成。

大卫。摩尔

这是一个很好的例子,谢谢。只有一个问题-当运行脚本的“代码生成”部分时,我得到以下错误。什么好主意吗?

编码器的输入。const不能被简化为常量:不支持的值。金宝app

错误在==> loadCompactModel行:33列:64
代码生成失败:查看错误报告

秋道

Shiela Marie Puro

非常好的教程。容易理解的

Bernhard Suhm

当然,您可以将相同的工作流应用于其他数据集。您可能会发现其他模型在您的问题上工作得更好(比SVM或随机森林),而且您可能必须调整这些特性(但这被封装在不同的函数中)——或应用小波。在R2020a版本中,我将推出一个具有全新Auto ML示例的更新,包括对该数据应用小波散射,这可以作为将小波散射应用于她的信号类型数据的蓝图。

詹姆斯·弗林

如果这个程序可以与其他数据合作,您的工作真的很兴起我,我很好奇。我的合作伙伴和我正在研究另一个分类器,我们有兴趣改装您的代码,以便为我们的实际分类器具有基础,对我们的实际分类器,任何想法?

Bernhard Suhm

Re: x.a -特征提取在实际心音记录上滑动了5秒的窗口,这在长度上是不同的。这就是为什么我们最终会有比音频文件更多的行。如果你想研究什么特征被提取了,看看extractFeatures。m在HelperFunctions中。

X.A.

功能表(13015 * 28),它如何与3240音频波文件相关联?每个文件的4行?谢谢

Sainath Urankar

Bernhard Suhm

好了,各位,这个最新版本(1.6)有一大堆新东西:
•将超参数调优和成本矩阵移动到分类学习器中(需要R2019b)
•添加了在末尾应用深度学习的链接,并应用小波散射的奖励部分
•小调整,以确保脚本也运行在MacOS上

Bernhard Suhm

没错,在代码生成部分存在向后代码不兼容性。我即将发布一个重要的更新版本,利用R2019b中可用的很酷的新特性,并演示一种自动特征提取技术(小波散射)。请继续关注。

穆斯塔岛Saleh.

@Arun普拉丹
而不是加载“TrainedEnsembleModel_FeatSel。,尝试重新生成Mat文件。

卢卡斯霍尔兹

包括数据在内的挑战网站现在似乎已经被重新定位了。我在他们的档案中找到了以下链接的网站数据:

https://archive.physionet.org/pn3/challenge/2016/

可以在该页面的底部找到.zip文件的Respecitve链接:

https://archive.physionet.org/pn3/challenge/2016/training.zip
https://archive.physionet.org/pn3/challenge/2016/validation.zip.

将这些添加到您的活动脚本中,您就可以开始了!

miraksy.

aissaoui abdelfettah

呵呵chieun lim

@Arun普拉丹
我遇到了同样的问题。你找到解决办法了吗?

阿伦普拉丹

在运行此脚本时,在代码生成阶段(与系统集成了分析)部分,我得到了这个错误

使用rmfield出错(第65行)
一个名为“BinnedX”的字段不存在。

ClassReg.Learning.Coderutils.Classiftostruct(第37行)中出现错误
dataSummary = rmfield (dataSummary BinnedX);

classReg.Learning.Classif.comPactClassificationSenseMble / Tostruct(第397行)中出现错误
s = classreg.learning.coderutils.classifToStruct(这个);

saveCompactModel错误(第23行)
compactStruct = toStruct (compactObj);% #好< NASGU >

Bernhard Suhm

培训数据确实应该放在data /training/training-a,b,…不确定这是否解决了脚本后面的问题。

雅各布·霍夫曼

当FileDataStore尝试从“Training”文件夹中读取时,我会收到错误。培训jip unzipped时,zip包含几个名为training-a的文件夹,培训-b等。如果这些文件夹的内容组合成一个名为培训的单个文件夹?我试过这个,它过去了这个步骤,但后来我稍后得到了错误。我认为,因为这些各个训练文件夹中的每一个中的一些文件都有相同的名称,因此在复制到同一文件夹时互相覆盖。

teimoor巴拉米

嗨,我想通过phyooneet ptb诊断数据库预测心脏病发作。如果我向下加载整个数据库。我想要分类是拖车课程案例正常和心脏病发作

kumia kuma

西尔维亚•西蒙

用它来学习机器使事情变得更容易。太棒了!

张娇

非常方便!

michio.

Bernhard Suhm

@Muhammad:在选择特定功能后,你一定没有在生成或加载模型的实时脚本上运行这一节。你可以简单地运行load('TrainedEnsembleModel_FeatSel.mat')来创建这个变量。

code_genration
未定义函数或变量'trained_model_featsel'。

code_generation错误(第2行)
saveCompactModel (trained_model_featsel HeartSoundClassificationModel);

遗传算法

@Youjie你们
我也有同样的问题。importAudioFile函数在HelperFunctions文件夹中。您需要将HelperFunctions文件夹添加到该路径中。如果代码没有为你做,然后右击这个文件夹在Matlab的左面板和选择'添加到路径',然后'选定的文件夹'。

Youjie你们

嗨Suhm先生,
我正在读你的电子书,这是一个伟大的教程。但是,我遇到了一个错误,这使得程序无法计数在我执行手动锻炼并运行分类器的“访问和探索数据”时运行。这是错误信息:

使用fileDatastore时出错(第64行)
函数importAudioFile不存在。

谢谢!

最好的问候,
Youjie (Youjie.Ye@warwick.ac.uk)

Bernhard Suhm

回复:JJ的问题。
1)如果您计划运行实际的特征提取(通过数据存储访问数据),请确保您已经下载了训练数据。第一个代码段会这样做,但默认情况下它是禁用的(getTrainingData = 0)
2)GCP是一个MATLAB命令,它启动了一个计算资源池(包括CPU的多个核心),但您需要安装并行计算工具箱,或者您将收到错误。

JJ

你好,

我试图通过运行代码为feature_table提取特性,但我遇到了两个困难:1)fileDatastore创建了一个错误在第105行->错误使用fileDatastore(第105行)不能找到文件或文件夹匹配…
2)我需要知道gcp,以便运行这行代码:我们质量是什么?

谢谢!

Ehsan Modiri.

它是完美的,易于使用。然而,在Mathworks提供的链接“掌握机器学习:MATLAB一步一步指南”中,仍然有一个问题。
https://uk.mathwands.com/campaigns/offers/mastering-machine-learning-with-matlab.html.
他们没有更新你的功能的最新版本。

Bernhard Suhm

在今天的更新中,代码与我们的高级机器学习电子书中的示例相匹配,没有进一步的更改,并且几个遇到的代码生成问题应该得到解决(现在,简化模型将使用15个功能)。保持反馈!

福锡

干得好!

yiran段

Shengwen李

德州仪器公司

福勒斯特Titcomb

我在102行得到一个错误,fileDatastore,它说,“找不到匹配的文件或文件夹”,然后它列出了一个路径。在左侧窗格中有一个数据文件夹,其中有一个验证子文件夹,其中有很多.wav文件。我试图删除数据文件夹,以便重新加载,但我没有权限。脚本贯穿FFT情节。

Bernhard Suhm

我很抱歉,由于某些原因,上次的更新没有提到这些更正。你可以通过修改extractCodegenFeatures中的一行来修复它:“number_of_features = 14;”

伊斯兰教阿拉姆

这个例子太棒了。
但是,在HelperFunctions/trifbank中有一个错误。第一行是vfunction而不是function。

然后,当我纠正这个错字时,我收到以下错误,我现在无法解决:

???X数据必须有14列。

错误在==> classifyHeartSounds Line: 20 Column: 20
代码生成失败:查看错误报告

您能否提供一些帮助来解决第二次错误?

非常感谢你的精彩教程。

Rohan Leekha

错误使用mfcc
使用提取函数时出错

如何纠正这些错误,你能帮我出去吗?

Riados

苏姆先生,

您能否请重新加载/向我展示Wavelet_Features Helper功能的代码?
我正在进行一个类似的机器学习项目,从这个讲座中学到了很多,已经看到/了解小波_features函数对我有很大的帮助。

最好的问候,
Riad(r.akhundov@griffith.edu.au)

专员Hanspeter

会很酷,但不幸的是不起作用。一个错误是在HelperFunctions/trifbank。第一行是'vfunction'而不是'function'。

在生命脚本中,有一行是save('FeatureTable1', 'feature_table');但是应该保存('FeatureTable', 'feature_table');

Codegen也失败了

???X数据必须有14列。

错误在==> classifyHeartSounds Line: 20 Column: 20
代码生成失败:查看错误报告

晴朗的莎

小娟倪

MATLAB版本兼容性
创建R2019b
兼容R2016b及后续版本
平台兼容性
窗户 macOS Linux.
确认

启发:脑电信号特征提取

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!

HeartsoundclassificationNew-FX.