sklearn log_loss 如何知道概率的顺序?
How does sklearn log_loss know the order of probabilities?
考虑 log_loss 的 sklearn 文档中的示例:
from sklearn.metrics import log loss
log_loss(["spam", "ham", "ham", "spam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
运行 这个,我们得到~0.216的输出。该模型相当擅长对垃圾邮件和垃圾邮件进行分类。
sklearn怎么知道第一个概率是ham
,第二个是spam
?
如果我想翻转标签,即第一个是spam
,第二个是ham
,我该怎么做?明确提供标签参数不起作用:
log_loss(["spam", "ham", "ham", "spam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]], labels=["ham", "spam"])
输出:0.216。
log_loss(["spam", "ham", "ham", "spam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]], labels=["spam", "ham"])
输出:0.216。
请注意,这不是关于根据 this question on the stats Stack Exchange 的真值标签顺序的问题,而是关于概率顺序的问题。
sklearn.metrics.log_loss
假定概率标签按字母顺序排列。这可以在 source code.
中看到
要翻转标签,您需要按相反的字母顺序重命名它们,例如aspam
和 bham
:
from sklearn.metrics import log_loss
log_loss(["aspam", "bham", "bham", "aspam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
输出:~1.816.
考虑 log_loss 的 sklearn 文档中的示例:
from sklearn.metrics import log loss
log_loss(["spam", "ham", "ham", "spam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
运行 这个,我们得到~0.216的输出。该模型相当擅长对垃圾邮件和垃圾邮件进行分类。
sklearn怎么知道第一个概率是ham
,第二个是spam
?
如果我想翻转标签,即第一个是spam
,第二个是ham
,我该怎么做?明确提供标签参数不起作用:
log_loss(["spam", "ham", "ham", "spam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]], labels=["ham", "spam"])
输出:0.216。
log_loss(["spam", "ham", "ham", "spam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]], labels=["spam", "ham"])
输出:0.216。
请注意,这不是关于根据 this question on the stats Stack Exchange 的真值标签顺序的问题,而是关于概率顺序的问题。
sklearn.metrics.log_loss
假定概率标签按字母顺序排列。这可以在 source code.
要翻转标签,您需要按相反的字母顺序重命名它们,例如aspam
和 bham
:
from sklearn.metrics import log_loss
log_loss(["aspam", "bham", "bham", "aspam"], [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
输出:~1.816.