【发布时间】:2013-05-19 03:04:09
【问题描述】:
我正在使用此示例从 SVM 分类结果创建 ROC 图: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 中使用预计算内核来做到这一点?
【问题讨论】:
标签: python machine-learning svm scikit-learn roc