【问题标题】:How to use scikit-learn's SVM with histograms as features?如何使用 scikit-learn 的 SVM 和直方图作为特征?
【发布时间】:2012-08-31 08:46:12
【问题描述】:

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

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

提前谢谢你

【问题讨论】:

    标签: python machine-learning svm scikit-learn


    【解决方案1】:

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

    上面的示例使用“管道”,但您也可以在将数据传递给线性分类器之前将其应用于数据,因为AdditiveChi2Sampler 实际上并没有以任何方式将fit 应用于数据。

    请记住,这只是内核映射的近似值(我发现它工作得很好),如果您想使用精确的内核,您应该使用 ogrisel 的 anwser。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • OP 显然想要使用 Andy 的内核近似,它的工作方式不同(并且将与线性学习器一起使用)。
      • 其实我不确定 OP 是否想要一个真正的内核并在其上使用 libsvm 的 SMO 求解器,或者 OP 是否想用非线性随机特征映射来近似内核扩展,然后训练一个线性 SVM,例如作为 SGDClassifier 。
      猜你喜欢
      • 2015-01-31
      • 2020-09-17
      • 2017-08-24
      • 2019-12-17
      • 2012-09-04
      • 2015-05-31
      • 2016-02-25
      • 2018-02-24
      • 2019-01-10
      相关资源
      最近更新 更多