Я использую этот пример для создания графика ROC из результатов классификации SVM: http://scikit-learn.org/0.13/auto_examples/plot_roc.html
Однако каждая точка данных фактически состоит из 4 векторов признаков длиной d, объединенных с использованием специальной функции ядра, которая не соответствует конкретной парадигме K (X, X). Таким образом, я должен предоставить 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 (из приведенной выше ссылки), по-видимому, является процесс разделения данных на два набора с последующим вызовом predict_proba()
на тестовом наборе. Можно ли сделать это в scikit-learn, используя предварительно вычисленное ядро?