不同特征的不同内核 – scikit-learn SVM

我正在尝试使用 sklearn.svm.SVC 构建一个分类器,但我希望在不同的特征子集上分别训练内核,以更好地表示特征空间(如此处所述)。

我已经阅读了用户指南的页面,我了解到我可以创建由单个内核相加的内核,或者向SVC提供预计算的内核(kernel = 'precomputed'),但我不明白如何将不同的内核应用于不同的特征?在sklearn中有没有办法实现这个?

我已经找到了一种在sklearn中计算内核的方法(https://scikit-learn.org/stable/modules/gaussian_process.html#gp-kernels),所以我可以分别计算每个集合上的内核。然而,一旦我输出距离矩阵,我不确定如何使用它来训练SVM。

我是否需要创建一个自定义内核,如下所示:

if feature == condition1:   use kernel Xelse:   use kernel Y

并将其添加到SVM中?

或者是否有其他Python库可以用于此目的?


回答:

你提到的这个问题属于多内核学习(MKL)。你可以为不同的特征组训练不同的内核。我在一个多模态案例中使用过这种方法,那时我希望为图像和文本使用不同的内核。

我不确定你是否真的可以通过scikit-learn来实现这一点。

GitHub上提供了一些库,例如这个:https://github.com/IvanoLauriola/MKLpy1

希望它能帮助你实现你的目标。

Related Posts

神经网络反向传播代码不工作

我需要编写一个简单的由1个输出节点、1个包含3个节点的…

值错误:y 包含先前未见过的标签:

我使用了 决策树分类器,我想将我的 输入 作为 字符串…

使用不平衡数据集进行特征选择时遇到的问题

我正在使用不平衡数据集(54:38:7%)进行特征选择…

广义随机森林/因果森林在Python上的应用

我在寻找Python上的广义随机森林/因果森林算法,但…

如何用PyTorch仅用标量损失来训练神经网络?

假设我们有一个神经网络,我们希望它能根据输入预测三个值…

什么是RNN中间隐藏状态的良好用途?

我已经以三种不同的方式使用了RNN/LSTM: 多对多…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注