如何使用直方图作为特征的scikit-learn的SVM?

时间:2012-09-06 13:51:23

标签: python machine-learning svm scikit-learn

我希望将scikit-learn的SVM与卡方内核一起使用,如here所示。在这种情况下,内核是直方图,这是我的数据表示。但是,我找不到这些与直方图一起使用的例子。这样做的正确方法是什么?

将直方图视为向量的正确方法是,向量中的每个元素都对应于直方图的bin?

提前谢谢

2 个答案:

答案 0 :(得分:10)

有一个使用近似特征映射here的示例。它适用于RBF内核,但它的工作原理相同。

上面的示例使用“管道”,但您也可以在将数据转换为线性分类器之前将转换应用于数据,因为AdditiveChi2Sampler实际上不会以任何方式fit对数据进行{{1}}

请记住,这只是内核映射的近似(我发现它运行得很好),如果你想使用确切的内核,你应该使用ogrisel的anwser。

答案 1 :(得分:2)

sklearn.svm.SVC以两种方式接受自定义内核:

  • 任意python函数作为kernel参数传递给构造函数
  • 预先计算的内核矩阵作为第一个参数传递给构造函数中的fitkernel=precomputed

前者可能要慢很多,但不需要提前分配整个内核矩阵(这对于大n_samples来说可能是禁止的。)

更多详细信息和the documentation on custom kernels中的示例链接。