我希望将scikit-learn的SVM与卡方核一起使用,如图所示。在这个场景中,内核在直方图上,这就是我的数据所表示的。然而,我找不到与直方图一起使用的例子。做这件事的正确方法是什么?
将直方图视为向量,其中向量中的每个元素都对应于直方图的一个bin,这是正确的方法吗?
提前感谢
这里有一个使用近似特征图的示例。它是针对RBF内核的,但它的工作原理是一样的。
上面的例子使用了"管道",但您也可以在将数据交给线性分类器之前将转换应用于数据,因为AdditiveChi2Sampler
实际上并没有以任何方式将fit
应用于数据。
请记住,这只是内核映射的近似值(我发现它运行得很好),如果你想使用确切的内核,你应该使用ogrisel的anwser。
sklearn.svm.SVC
以两种方式接受自定义内核:
- 作为
kernel
参数传递给构造函数的任意python函数 - 预计算的内核矩阵作为第一个参数传递给构造函数中的
fit
和kernel=precomputed
前者可能慢得多,但不需要预先分配整个核矩阵(这对于大的n_samples
来说可能是禁止的)。
有关自定义内核的文档中有更多详细信息和示例链接。