libsvm – 训练信号

我刚开始接触机器学习和支持向量机等领域。我有一组信号的x,y数据点,这个信号类似于心电图(如下图)。我想训练SVM来区分正常的心电图信号和非正常(异常)信号。使用LibSVM(或任何其他SVM库)实现这一目标的最佳方法是什么?

ECG


回答:

支持向量机像几乎所有分类器一样,要求训练样本以特征向量的形式表示,这些特征向量位于特征空间中。

为了创建这样的特征向量,你需要对信号进行特征提取。也就是说,你需要从信号中提取一些可测量的、具有区分性的、尺度不变的特征(例如,小波系数)。

一旦你完成了这些,你就需要将你的特征向量组织成数据矩阵的行(或列)。数据矩阵是一个二维矩阵,其行(或列)是之前提取的特征向量。例如,假设你有3个信号,这些信号由3D特征向量表示(即,你从每个信号中提取了3个特征)。

enter image description here,enter image description here,enter image description here

(其中T表示转置)。

那么你的数据矩阵将是:

enter image description here

创建数据矩阵后,你需要创建数据标签的向量。标签向量是一个一维向量,其行数(或列数)与你的数据矩阵相同,并且包含与你的特征向量对应的类别标签。由于你的问题包括两个类别(即,正常和非正常),你的标签向量将只有2个符号(例如,正常 = -1,非正常 = 1)。继续前面的例子,如果enter image description here是正常的,enter image description here是非正常的,那么你的标签向量将看起来像enter image description here

现在关于LibSVM部分:LibSVM使用LibSVM格式来存储数据矩阵和类别标签在一个.txt文件中。文件的格式是:

<label> <index1>:<value1> <index2>:<value2>

按照我们的例子,你的文件内容将看起来像:

-1 1:1 2:2 3:3-1 1:4 2:5 3:6 1 1:7 2:8 3:9

请注意,如果你有零值,你可以省略它们。例如,如果enter image description here,那么你的文件将看起来像:

-1 2:2 3:3-1 1:4 2:5 3:6 1 1:7 2:8 3:9

另外请注意,在文件的每一行中,首先写特征向量的类别标签,然后是其值。

一旦你创建了上述文件,你就可以开始了。在LibSVM的网站上,你会找到运行LibSVM所需的所有指令。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注