我想用匹配追踪来构造连续神经数据的连续时间窗口的稀疏表示,并最终检测数据中发生的事件。我附上了我的一些数据的快照,它显示了我的波包检测器的输出(原始数据是蓝色的,40-100 of希尔伯特包络是红色的,波纹管是多色的)。正如你所看到的,它包含振荡爆发(我们称之为波阵),我想找出稀疏的表示。最后,我想使用这些稀疏表示来制作波包检测器。目前,我使用小波变换的力量来检测波包,并且我正在试图观察匹配追踪是否会更精确和计算效率更高(我有相当高的假阳性率)。
我的理解是,在scikit的OMP模块中,没有内置于字典中的内容(比如Gabor、DCT、wpsym等等)。在其他匹配的追踪工具箱中很常见。相反,我们必须首先根据示例数据和培训标签来训练我们自己的字典。我觉得这很有吸引力,因为我们可以生成我们自己的字典,但我很难理解如何用我的数据来做到这一点。
在文档提供的示例中,数据是用make_sparse_coded_signal生成的。这给了我们y,X,w,从这里我们可以训练一个模型。我的神经数据是一个连续的追踪。我可以把它划分为时间窗口(假设500个样本长),这样我就可以在每个500个样本长窗口上单独运行OMP。但是我怎么拿到标签呢?如何根据我的数据构造y,X和w?
发布于 2017-01-19 06:04:52
我相信我知道我自己问题的答案。它很糟糕,因为你不能用你的数据构造y,X,w。您试图通过将一组字典元素(X)乘以一组权重(w),从而使y= Xw来重构数据(y)。
因此,您必须从预先设计的字典(X)开始,然后运行
omp = OrthogonalMatchingPursuit(n_nonzero_coefs=n_nonzero_coefs)
omp.fit(X, y)去找那些人。
我误以为您可以从这个函数中获得一个最佳稀疏字典,因为我阅读了文档中引用的纸,它确实提供了一个misled算法,用于生成高效的稀疏字典,然后可以用于正交匹配搜索。
如果这里有什么不对的地方,请有人指正我。
https://stackoverflow.com/questions/41138832
复制相似问题