将带有 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 时返回完全不同的预测(模型)