将带有 rbf 内核的 sklearn SVC 移植到 java

Posted

技术标签:

【中文标题】将带有 rbf 内核的 sklearn SVC 移植到 java【英文标题】:Porting sklearn SVC with rbf kernel to java 【发布时间】:2018-01-08 14:46:35 【问题描述】:

我已经使用 sklearn 在 python 中训练了一个 rbf 内核 SVM,现在正在将它移植到 java 进行生产。

在阅读SVC documentation 时,我遇到了决策函数:

这似乎表明我必须知道每个训练样本的权重才能评估 SVC,但是 SVC 仅通过 dual_coef_ 属性公开支持向量的权重。

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

您不需要知道每个训练样本的权重。您只需要支持向量的权重。

原因是如果向量x_i 不是支持向量,那么alpha_i=0(参见第5 页here),因此y_i*alpha_i=0 也是如此。因此,您永远不会在分类过程中使用这样的x_i(一旦您安装了 svm)。

其余参数可通过svm属性访问,如documentation中所述:

这个参数可以通过成员dual_coef_访问 持有产品y_i*alpha_i, support_vectors_ 持有 支持向量,intercept_ 包含独立项 rho

【讨论】:

以上是关于将带有 rbf 内核的 sklearn SVC 移植到 java的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.SVC 在使用带有小型平衡数据集的 GridSearchCV 时返回完全不同的预测(模型)

带有 rbf 内核的 SVC 的 10 大功能

sklearn.SVC 中的独立 SVC 行是做啥的?

sklearn SVM 默认距离测量

如何将 SHAP 与 sklearn 中的线性 SVC 模型一起使用 Pipeline?

Keras 神经网络和 SKlearn SVM.SVC