<p>不过,您可以定义一个记分器,它使用</em>混淆矩阵中的特定值<em>。见<a href="http://scikit-learn.org/stable/modules/model_evaluation.html#multimetric-scoring" rel="nofollow noreferrer">here [link]</a>。只是引用代码:</p>
<pre class="lang-py prettyprint-override"><code>def tp(y_true, y_pred): return confusion_matrix(y_true, y_pred)[0, 0]
def tn(y_true, y_pred): return confusion_matrix(y_true, y_pred)[1, 1]
def fp(y_true, y_pred): return confusion_matrix(y_true, y_pred)[1, 0]
def fn(y_true, y_pred): return confusion_matrix(y_true, y_pred)[0, 1]
scoring = {'tp' : make_scorer(tp), 'tn' : make_scorer(tn),
'fp' : make_scorer(fp), 'fn' : make_scorer(fn)}
cv_results = cross_validate(svm.fit(X, y), X, y, scoring=scoring)
</code></pre>
<p>这将对这四个记分器中的每一个执行交叉验证,并返回记分字典<code>cv_results</code>,例如,使用键<code>test_tp</code>、<code>test_tn</code>等,其中包含来自每个交叉验证拆分的混淆矩阵值。</p>
<p>由此你可以重建一个平均混淆矩阵,但是<a href="https://stackoverflow.com/a/45011622/3801913">Xema</a>的<code>cross_val_predict</code>似乎更适合这个。</p>
<p>注意,这实际上不适用于<code>cross_val_score</code>;您需要<code>cross_validate</code>(在scikit learn v0.19中引入)。</p>
<p>旁注:您可以使用这些记分器中的<em>一个</em>来通过网格搜索进行超参数优化。</p>
<p>*编辑:在[1,1]返回真负片,而不是[0,0]</p>