標籤:

比較兩個數組的相似度?

如題,有兩個數組:

數組一:

+-------------+-------------+
| 120.1 | 0.0 |
| 121.1 | 0.08 |
| 122.1 | 4.35 |
| 123.1 | 93.78 |
| 124.1 | 1.2 |
| 125.1 | 0.58 |
| 126.1 | 0.01 |
| 127.1 | 0.0 |
+-------------+-------------+

數組二:

+-------------+-------------+
| 120.05 | 0.0 |
| 121.07 | 0.16 |
| 122.06 | 5.92 |
| 123.01 | 92.14 |
| 124.02 | 1.19 |
| 125.04 | 0.57 |
| 126.1 | 0.01 |
| 127.1 | 0.0 |
+-------------+-------------+

這兩個數組表示的是一個概率分布的問題,比如123.1的概率是93.78%,在實際應用中數組一是一個計算值,數組二是一個測試值,有什麼辦法比較這兩個數組的相似度。

我的思念是:

實際的測試值(即數組二)的第一列和計算值之間是有差別的,有一些值並不是完全相等,比如123.1在測試的過程中可能會是123.09,我們可以將其處理成:

數組三:

+-------------+-------------+
| 120.1 | 0.0 |
| 121.1 | 0.16 |
| 122.1 | 5.92 |
| 123.1 | 92.14 |
| 124.1 | 1.19 |
| 125.1 | 0.57 |
| 126.1 | 0.01 |
| 127.1 | 0.0 |
+-------------+-------------+

然後將兩個數組的第一列最相似的概念值進行相減,得到的差相加,用這個差值的和代表相似度,這種方法是否太粗燥了。

本人對統計不是很熟悉,是否有更好的方法來表示這個相似度?

我現在使用的是Python,如果能用python描述就更好了


方差…


通常的數組相似性是計算cosine值來度量向量距離,但是你這裡的數組實際上是測量值,是實數軸上的稀疏數組,如果用cosine很可能是0。你這個問題的實質是計算兩組測量結果之間的相似性。

如果測量結果是正態分布,擬合出參數再計算相似性,如均值、方差等參數的檢驗。

若分布類型未知,則比較麻煩,可採用卡方檢驗、KS檢驗等方法。

你的結果按照正態分布來處理問題不大。


如果你們是當成分布的話,一種比較好的相似性度量方法是Kullback–Leibler divergence


這就是計算兩個向量的距離嘛。

挑選哪個距離(公式)是你的問題。你已經提的那個基本就是曼哈頓距離,還有歐幾里得距離等等。參考 機器學習中的相似性度量

學什麼專業的?


Python 描述?from scipy.spatial.distance import *

Distance computations (scipy.spatial.distance)

如 @任衛 所說,

挑選哪個距離(公式)是你的問題。


乘累加


推薦閱讀:

Django基礎(6): 模型Models高級進階必讀。
Django搭建個人博客:回到頂部浮動按鈕、矢量圖標、頁腳沉底和粘性側邊欄
python特殊變數
Seaborn中文教程(五):通過「多圖網格」結構化展示多維數據
Python3.讀取nc和hdf的套路

TAG:Python |