<p>具体错误是由于不支持多标签输出的表示(请参阅sklearn的<a href="http://scikit-learn.org/dev/modules/generated/sklearn.utils.multiclass.type_of_target.html" rel="nofollow noreferrer">^{<cd1>}</a>函数的文档)。
即使是正确的多标签输出,您仍然会得到一个错误,因为<code>cohen_kappa_score</code>不支持多标签输入(见下文)。事实上,<a href="https://en.wikipedia.org/wiki/Cohen%27s_kappa" rel="nofollow noreferrer">Cohen's kappa</a><em>只能应用于多类问题,而多标签输出的定义是非排他的。在</p>
<p>您可以为每个标签使用一个二进制分类器,并计算每个标签的Cohen kappa。如果你需要一个代表一致性的唯一数字,你可以计算标签的平均kappa值。在</p>
<h2>示例:Cohen's kappa for multi-label</h2>
<pre><code>to_dict = lambda x: {k: [1 if k in y else 0 for y in x] for k in labels}
a_dict = to_dict(annotator_a)
b_dict = to_dict(annotator_b)
cohen_dict = {k: cohen_kappa_score(a_dict[k], b_dict[k]) for k in labels}
cohen_avg = np.mean(list(cohen_dict.values()))
print(f'a_dict: {a_dict}')
print(f'b_dict: {b_dict}')
print(f'cohen_dict: {cohen_dict}')
print(f'cohen_avg: {cohen_avg}')
</code></pre>
<p>输出:</p>
^{pr2}$
<h3>如何转换为序列序列以纠正多标签表示</h3>
<pre><code>from sklearn.preprocessing import MultiLabelBinarizer
m = MultiLabelBinarizer(classes=list('abcdef'))
a_multi = m.fit_transform(annotator_a)
b_multi = m.fit_transform(annotator_b)
print(f'a_multi:\n{a_multi}')
print(f'b_multi:\n{b_multi}')
cohen_kappa_score(a_multi, b_multi)
</code></pre>
<p>输出:</p>
<pre><code>a_multi:
[[1 1 1 0 0 0]
[0 0 0 1 1 0]]
b_multi:
[[0 1 1 0 0 0]
[0 0 0 0 0 1]]
...
ValueError: multilabel-indicator is not supported
</code></pre>