我最近意识到诸如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被认为“更相似”。一个内核 还必须为正半定。