我正在尝试使用sklearn.svm.SVC
构建分类器,但我想分别针对特征的不同子集训练内核,以更好地表示特征空间(如here所述)。
我已经阅读了用户指南page,并且我了解我可以创建由各个内核之和构成的内核,或者将预先计算的内核(kernel = 'precomputed'
)馈入SVC,但是我不了解如何将不同的内核应用于不同的功能?有没有一种方法可以在sklearn
中实现呢?
我已经找到了一种在sklearn(https://scikit-learn.org/stable/modules/gaussian_process.html#gp-kernels)中计算内核的方法,因此我可以分别计算每个集合上的内核。但是,一旦我输出了距离矩阵,就不确定如何使用它来训练SVM。
我是否必须创建一个自定义内核,如:
if feature == condition1:
use kernel X
else:
use kernel Y
并将其添加到SVM吗?
或者还有其他我可以使用的python库吗?
您指的是Multiple Kernel Learning (MKL)
的问题。您可以在其中为不同的功能组训练不同的内核。我在多模式情况下使用了此方法,在这种情况下,我需要用于图像和文本的不同内核。
我不确定您是否真的可以通过scikit-learn完成此操作。
例如,在GitHub上提供了一些库:https://github.com/IvanoLauriola/MKLpy 1
希望它可以帮助您实现目标。