Classification
檢測二進制序列中的簇
我有一個二進制序列,例如
11111011011110101100000000000100101011011111101111100000000000011010100000010000000011101111
大部分為 1 的簇後跟大量的零,如下圖所示(黑色代表 1):
我想應用一種技術(最好在 R 或 Python 中),我可以自動檢測這些 1 的簇,並產生跨度(在圖像中表示為紅線)。我知道可以用一個閾值來做到這一點,即兩個集群必須至少被n 0 分開才能成為集群,但我想知道是否還有其他不使用預定義閾值的既定方法。
任何想法?
我會避免稱它們為“集群”。使用這個術語,您最終會一直從數據挖掘中分心到多維技術。
您的問題是一個更簡單的一維設置。甚至更簡單:你甚至沒有坐標,而是一個零和一的數組。
永遠不會有一種萬能的解決方案來解決您的問題。因為一個用戶可能想要讀取非常高分辨率的“條形碼”,而另一個用戶有很多噪音。
所以最後,你需要有一個參數。您有許多選擇:絕對間隙大小、相對間隙大小、內核帶寬等。
一個非常簡單的“基於內核”的方法是將每個像素映射到 -10…+10 中設置的像素數。所以這是 21 個單元格,值將是 0 到 21。現在尋找一個局部最小值。如果它開始拆分您還不想拆分的運行,請增加窗口大小。