2016-12-14 40 views
1

我想用匹配追蹤來構建連續神經數據的連續時間窗的稀疏表示,並最終檢測數據中發生的事件。我附上了我的一些data的快照,其中顯示了我的波包檢測器(原始數據是藍色的,40-100赫茲希爾伯特包絡線是紅色的,波包是多色的)的輸出。正如你所看到的,它包含了振盪突發(我們稱之爲wavepackets),我想找到稀疏表示。最終,我想用這些稀疏表示來製作波包檢測器。我目前使用小波變換的功能來檢測wavepackets,我試圖看看匹配追蹤是否會更加準確和計算效率更高(我的假陽性率相當高)。在連續數據上使用scikit-learn OrthogonalMatchingPursuit模塊

我的理解是,在用於scikit-learn的OMP模塊中,沒有像其他匹配追蹤工具箱中常見的字典(如Gabor,DCT,wpsym等)。相反,我們必須首先從示例數據和培訓標籤中培訓我們自己的字典。我覺得這很有吸引力,因爲我們可以生成我們自己的字典,但是我很難看到我的數據如何實現。

documentation提供的示例中,使用make_sparse_coded_signal生成數據。這給了我們y,X和w,從中我們可以訓練一個模型。我的神經數據是一個連續的蹤跡。我可以將它分成時間窗口(假設長度爲500個樣本),這樣我就可以在每個500個樣本長窗口上單獨運行OMP。但是,我如何獲得標籤?我如何從我的數據中構建y,X和w?

回答

0

我相信我知道我自己問題的答案。這是很糟糕的,因爲你不能從你的數據中構造y,X和w。您嘗試通過將一組字典元素(X)乘以一組權重(w)來重構您的數據(y),使得y = Xw。

所以,你必須開始一個預先設計的字典(X),然後運行

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

得到coeffs(W)。

我誤以爲你可以從這個函數中得到一個最佳的稀疏字典,因爲我讀了文檔中引用的paper,它確實提供了一個K-SVD算法來生成高效的稀疏字典,然後可以用它來正交匹配追蹤。

如果這裏有什麼不正確的地方,請有人糾正我。