不同特征的不同内核 – 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

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

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