我希望将scikit-learn的SVM与卡方内核一起使用,如here所示。在这种情况下,内核是直方图,这是我的数据表示。但是,我找不到这些与直方图一起使用的例子。这样做的正确方法是什么?
将直方图视为向量的正确方法是,向量中的每个元素都对应于直方图的bin?
提前谢谢
答案 0 :(得分:10)
有一个使用近似特征映射here的示例。它适用于RBF内核,但它的工作原理相同。
上面的示例使用“管道”,但您也可以在将数据转换为线性分类器之前将转换应用于数据,因为AdditiveChi2Sampler
实际上不会以任何方式fit
对数据进行{{1}}
请记住,这只是内核映射的近似(我发现它运行得很好),如果你想使用确切的内核,你应该使用ogrisel的anwser。
答案 1 :(得分:2)
sklearn.svm.SVC
以两种方式接受自定义内核:
kernel
参数传递给构造函数fit
和kernel=precomputed
前者可能要慢很多,但不需要提前分配整个内核矩阵(这对于大n_samples
来说可能是禁止的。)
更多详细信息和the documentation on custom kernels中的示例链接。