我有兩個列表,每個列表包含一組有序的數字。在列表中查找具有不同縮放比例/模糊模式識別的子列表
一個列表很小(〜5-20個元素),另一個很大(~5000)。這些列表具有不同的「縮放比例」,並且可能在其中一個或另一個列表中缺少點。一般來說,大多數元素都將在這兩個列表中。
我正在尋找一種方法來檢測位置和兩個列表之間的「縮放」,使得兩個列表之間的距離最小。
一個例子是:
l1 = [ 100., 200., 400.]
l2 = [ 350., 1000., 2003., 3996., 7500., 23000.]
規模將是10和在L2 L1的位置是1。
列表10. * L1出現在位置1 L2內;列表的距離爲7(這取決於我選擇的度量,這裏我只是總結了所有元素之間的差異)。
我想知道是否有方法,例如,在模式識別,我可以使用(最好在Python中)。在我看來,在比較具有未知縮放因子的模式時,這可能是一個常見問題。但是我找不到描述我的問題的好關鍵字。
這樣做的應用是通過將測量光譜線與已知線位置的目錄進行比較來識別測量光譜線,並因此將非物理單位「檢測器上的像素」轉換爲實際波長。
原則上,我已經可以提供兩個列表的縮放因子的一個體面的猜測,但我想這不是必要的,因爲解決方案在大多數情況下應該是唯一的。
任何幫助表示讚賞,
朱利安
我相信可能適用於您的問題的關鍵字是「迴歸」和/或「擬合」。我幾乎可以肯定,這可以用NumPy完成,可能使用['numpy.linalg.lstsq'](http://glowingpython.blogspot.ch/2012/03/linear-regression-with-numpy.html)或[ 'numpy.polyfit'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html)。然而,這並不是我的專業領域,所以我希望NumPy/SciPy的一些人可以留下一個有教養的答案。 –
我不認爲我可以使用簡單的迴歸算法,因爲兩個列表之間的距離不是一個連續的尺度函數。根據比例尺,第二個列表中的「下一個鄰居」元素將發生變化。 –