可以使用Sklearn成对度量标准来输出成对比较排名吗?

时间:2019-07-14 02:22:54

标签: scikit-learn compare similarity pairwise pairwise-distance

我最近意识到诸如Bradley-Terry之类的“成对比较”算法。我对Scikit学习非常熟悉并经验丰富,但是我以前从未使用过成对度量。

如果这是我的数据,我想知道的是

         A      B         C     D       E     F      G         H
1425  3564   57.0  0.015993  0.68   38.76   9.0   4.31  0.157895
3544  7683  519.0  0.067552  1.90  986.10  10.0  98.61  0.019268
4721    32    1.0  0.031250  3.54    3.54   0.0   0.00  0.000000

,我的目标是分配排名(0最好,3最差),数据是异构的(不在同一范围内),并且D和G列的值低而不是高时为“好”。其余各列的值都很高时就很好。

可以使用Sklearn的成对模块比较这些行并输出排名吗?

例如:

from sklearn.metrics import pairwise
for name,mod in pairwise.kernel_metrics().items():
    print("name: {}".format(name))
    print(mod(X))
    print()

输出:

name: additive_chi2
[[   -0.         -2841.92333525 -3567.94414576]
 [-2841.92333525    -0.         -9188.20627483]
 [-3567.94414576 -9188.20627483    -0.        ]]

name: chi2
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

name: linear
[[1.27069474e+07 2.74505325e+07 1.14244618e+05]
 [2.74505325e+07 6.02800708e+07 2.49872522e+05]
 [1.14244618e+05 2.49872522e+05 1.05006418e+03]]

name: polynomial
[[4.00732491e+18 4.04001280e+19 2.91291976e+12]
 [4.04001280e+19 4.27810532e+20 3.04738449e+13]
 [2.91291976e+12 3.04738449e+13 2.31348171e+06]]

name: poly
[[4.00732491e+18 4.04001280e+19 2.91291976e+12]
 [4.04001280e+19 4.27810532e+20 3.04738449e+13]
 [2.91291976e+12 3.04738449e+13 2.31348171e+06]]

name: rbf
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

name: laplacian
[[1.00000000e+000 4.30494896e-306 2.62860813e-198]
 [4.30494896e-306 1.00000000e+000 0.00000000e+000]
 [2.62860813e-198 0.00000000e+000 1.00000000e+000]]

name: sigmoid
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

name: cosine
[[1.         0.9918438  0.98902487]
 [0.9918438  1.         0.99317025]
 [0.98902487 0.99317025 1.        ]]

事实是,我不知道这些输出是什么意思,如何解释它们以及一旦获得它们就如何使用它们。

根据scikit-learn's documentation,内核是相似度的度量。

  

核是相似性的度量,即s(a,b)> s(a,c)(如果有对象)   与对象a和c相比,a和b被认为“更相似”。一个内核   还必须为正半定。

0 个答案:

没有答案