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

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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