【问题标题】:Why are the outputs of jaccard_score and jaccard_similarity_score different?为什么 jaccard_score 和 jaccard_similarity_score 的输出不同?
【发布时间】:2020-08-30 13:22:40
【问题描述】:

当尝试使用 jaccard_similarity_score 时,我收到 “弃用警告:jaccard_similarity_score 已被弃用并替换为 jaccard_score。它将在 0.23 版中删除。此实现对于二进制和多类分类任务具有令人惊讶的行为。”

Jaccard Similarity Score 的经典解释与已弃用的 jaccard_similarity_score 的输出相匹配。

但是,jaccard_score 和 jaccard_similarity_score 的结果是不同的(即使尝试不同的参数,如图所示)。

from sklearn.metrics import jaccard_similarity_score, jaccard_score  
y_pred = [0,1,0,1,0,0,0,1,0,1]  
y_true = [0,0,0,1,0,1,0,1,0,0] 
print("jaccard_similarity_score=",jaccard_similarity_score(y_true, y_pred),'\n')  
for param in ['weighted', 'micro', 'macro']:  
    print(param, " jaccard_score=", jaccard_score(y_true, y_pred,  average=param))    

这是上面代码的输出:

jaccard_similarity_score= 0.7 

weighted  jaccard_score= 0.5575  
micro  jaccard_score= 0.5384615384615384  
macro  jaccard_score= 0.5125 

是否有一个选项可以应用到结果相等?新的 jaccard_score 是否按预期工作?

【问题讨论】:

    标签: python scikit-learn scoring


    【解决方案1】:

    from sklearn.metrics import jaccard_similarity_score 需要替换为from sklearn.metrics import jaccard_score 并且需要新参数pos_label,例如-jaccard_score(y_test, dt_yhat,pos_label = "PAIDOFF")pos_label 的有效标签为:array(['COLLECTION', 'PAIDOFF'], dtype='<U10')

    https://github.com/DiamondLightSource/SuRVoS/issues/103

    【讨论】:

      【解决方案2】:

      你可以从https://github.com/scikit-learn/scikit-learn/blob/a5d4c61/sklearn/metrics/classification.py#L311看到实现

      jaccard_similarity_score 实际上计算准确度。

      所以,实际上,jaccard_similarity_score 在这里并不是一个好的函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-01
        • 2021-08-29
        • 1970-01-01
        • 2018-07-11
        • 2017-08-28
        • 2017-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多