微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 K-fold CV 和 Gridsearch 使用 SVM 进行数据和训练的 PCA

如何解决使用 K-fold CV 和 Gridsearch 使用 SVM 进行数据和训练的 PCA

我需要使用 LinearSVC 训练 SVM 模型,并使用内部 2 倍 Gridsearch 进行 10 倍交叉验证以优化 gamma 和 C。但我还必须对我的数据应用 PCA 以减小其大小。 我应该在 CV 和模型训练发生的循环之前还是在循环内应用 PCA? 在后一种情况下,我会为每个循环使用不同数量的主成分,但这有什么缺点吗?

解决方法

最好的解决方案是创建一个 sklearn Pipeline 并将两个步骤(PCALinarSvc 放在其中)。这将创建一个实现 fit()predict() 并且可以在 GridSearchCV 中使用的对象。

from sklearn.svm import LinearSVC
from sklearn.pipeline import Pipeline
from sklearn.decomposition import PCA
from sklearn.model_selection import GridSearchCV

pipe = Pipeline([('pca',PCA()),('clf',LinearSVC())])
params = {
    'pca__n_components' : [2,5,10,15],'clf__C' : [0.5,1,10],}

gs = GridSearchCV(estimator=pipe,param_grid=params)
gs.fit(X_train,y_train)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。