在连续数据上使用Scikit-Learn OrthoconalMatchingPursuit模块



我想使用匹配的追踪来构建连续神经数据的连续时间窗口的稀疏表示,并最终检测到数据中发生的事件。我附上了我的一些数据的快照,其中显示了我的波袋检测器的输出(原始数据为蓝色,40-100Hz Hilbert Invelope是红色的,并且Wavepackets是多色的)。如您所见,它包含振荡爆发(我们称为Wavepackets),我想找到稀疏的表示形式。最终,我想使用这些稀疏表示形式来制作波袋检测器。我目前使用小波变换的力量来检测波袋,我正在尝试查看匹配的追击是否会更准确且计算上有效(我的误报率相当高)。

我的理解是,在Scikit-Learn的OMP模块中,在其他匹配的追击工具箱中常见的是词典内置(例如Gabor,dct,wpsym等)。相反,我们必须首先从示例数据和培训标签中训练自己的词典。我觉得这很有吸引力,因为我们可以生成自己的词典,但是我很难看到如何使用数据来做到这一点。

在文档数据中提供的示例中,使用make_sparse_coded_signal生成。这给了我们Y,X和W,我们可以从中训练模型。我的神经数据是一个连续的轨迹。我可以将其分为时间窗口(例如,长500个样本),这样我就可以单独地在每个500个样本长窗口上运行。但是我如何获得标签?我如何从数据中构造y,x和w?

我相信我知道自己问题的答案。它的姿势不好,因为您无法从数据中构造y,x和w。您尝试通过将一组字典元素(x)乘以一组权重(w)来重建数据(y),以便y = xw。

因此,您必须从预设的词典(x)开始,然后运行

omp = OrthogonalMatchingPursuit(n_nonzero_coefs=n_nonzero_coefs)
omp.fit(X, y)

获取系数(w)。

我被误导以为您可以从此功能中获得最佳的稀疏字典,因为我阅读了文档中引用的论文,该论文确实提供了用于生成有效的稀疏词典的K-SVD算法,然后可以用于正交词匹配追求。

如果这里的事情不正确,那么请有人纠正我。

相关内容

  • 没有找到相关文章

最新更新