Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ libsvm-训练信号_C++_Machine Learning_Classification_Libsvm - Fatal编程技术网

C++ libsvm-训练信号

C++ libsvm-训练信号,c++,machine-learning,classification,libsvm,C++,Machine Learning,Classification,Libsvm,一般来说,我对ML和SVMs等都是新手。我有一个信号的x,y数据点数组。该信号类似于ECG(下图)。我想训练支持向量机对正常心电信号和非正常(异常)信号进行分类。使用LibSVM(或任何其他SVM库)实现这一点的最佳方法是什么 与几乎所有示例一样,要求将训练样本表示为位于特征空间中的样本 为了创建这样的特征向量,你必须对你的信号进行处理。也就是说,您必须从您的信号中提取一些可测量的辨别尺度不变特征(例如) 一旦这样做,就必须将特征向量组织为数据矩阵的行(或列)。数据矩阵是二维矩阵,其中其行(或列

一般来说,我对ML和SVMs等都是新手。我有一个信号的x,y数据点数组。该信号类似于ECG(下图)。我想训练支持向量机对正常心电信号和非正常(异常)信号进行分类。使用LibSVM(或任何其他SVM库)实现这一点的最佳方法是什么

与几乎所有示例一样,要求将训练样本表示为位于特征空间中的样本

为了创建这样的特征向量,你必须对你的信号进行处理。也就是说,您必须从您的信号中提取一些可测量的辨别尺度不变特征(例如)

一旦这样做,就必须将特征向量组织为数据矩阵的行(或列)。数据矩阵是二维矩阵,其中其行(或列)是先前提取的特征向量。例如,假设您有3个由3D特征向量表示的信号(即,从每个信号中提取了3个特征)

,, ,

(其中T表示转置)

那么您的数据矩阵将是:

创建数据矩阵后,必须创建数据标签的向量。标签向量是一个一维向量,其行数(或列数)与数据矩阵的行数(或列数)相同,并且包含与要素向量对应的类标签。由于您的问题由两类(即正常和非正常)组成,您的标签向量将只有2个符号(例如,正常=-1,非正常=1)。继续上一个示例,如果是法线和非法线,则标签向量如下所示

现在,关于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
-1 2:2 3:3
-1 1:4 2:5 3:6
 1 1:7 2:8 3:9
还要注意,在文件的每一行中,首先要写入特征向量的类标签,然后再写入其值


一旦创建了上述文件,就可以开始了。在中,您将找到在文件中运行LibSVM所需的所有说明。

对我来说,您的问题听起来像是个问题,因为您永远不会有“非正常”特征空间的训练样本。libSVM确实支持这一点

棘手的部分是提取不变特征,这是一个信号处理问题。您可能需要评估不同的方法,如小波或暴力采样。您也可以尝试使用描述性方法,如6个相对最小值/最大值。覆盖多个周期的算法可能比基于提取单个周期和/或提取单个参数的算法更稳定


根据您可接受的假阳性率和假阴性率,某些备选方案可能会被排除。

感谢您提供详细信息。你知道有什么好的库可以自动从信号中提取相关特征吗?正如你可能知道的,我对特征提取是新手。我认为峰值间隔距离和信号形态分割是很好的特征,但我不知道如何从以采样率
sr
采集的点阵列中的数字信号中“提取”该信息。如果表示原始信号采样的每个点序列,具有相同数量的点和具有相同索引的所有样本(例如,在每个信号中,序列中的第三个点具有索引3)对应于完全相同的采样时间帧,并且如果所有信号中的振幅具有相同的比例,则您可以使用点序列作为特征向量。否则,您将不得不求助于MatLab、Octave、SciKit Learn、Weka等软件包。信号特征提取技术有很多: