SVM 分類結果から ROC プロットを作成するために、この例を使用しています: http://scikit-learn.org/0.13/auto_examples/plot_roc.html
ただし、各データ ポイントは、特定の K(X, X) パラダイムに準拠しないカスタム カーネル関数を使用して結合された 4 つの長さ d の特徴ベクトルで効果的に構成されます。そのため、分類を行うために事前計算済みのカーネルを scikit-learn に提供する必要があります。次のようになります。
K = numpy.zeros(shape = (n, n))
# w1 + w2 + w3 + w4 = 1.0
# v1: array, shape (n, d)
# w1: float in [0, 1)
chi = sklearn.metrics.pairwise.chi2_kernel(v1, v1)
mu = 1.0 / numpy.mean(chi)
K += w1 * numpy.exp(-mu * chi)
# v2: array, shape (n, d)
# w2: float in [0, 1)
chi = sklearn.metrics.pairwise.chi2_kernel(v2, v2)
mu = 1.0 / numpy.mean(chi)
K += w2 * numpy.exp(-mu * chi)
# v3: array, shape (n, d)
# w3: float in [0, 1)
chi = sklearn.metrics.pairwise.chi2_kernel(v3, v3)
mu = 1.0 / numpy.mean(chi)
K += w3 * numpy.exp(-mu * chi)
# v4: array, shape (n, d)
# w4: float in [0, 1)
chi = sklearn.metrics.pairwise.chi2_kernel(v4, v4)
mu = 1.0 / numpy.mean(chi)
K += w4 * numpy.exp(-mu * chi)
return K
(上のリンクから) ROC プロットを生成する際の主な障害は、データを 2 つのセットに分割してpredict_proba()
からテスト セットを呼び出すプロセスのようです。事前計算されたカーネルを使用して scikit-learn でこれを行うことは可能ですか?