我需要训练一个支持向量机模型使用LinearSVC和10倍交叉验证与内部2倍的Gridsearch,以优化伽马和C,但我也必须应用PCA对我的数据,以减少其大小。我应该在模型的简历和训练发生之前还是在循环中应用PCA?在后一种情况下,每个循环都有不同的主成分数,但这是否有缺点呢?
发布于 2021-07-05 09:46:25
最好的解决方案是创建一个sklearn Pipeline并将两个步骤(PCA和LinarSvc都放在其中)。这将创建一个实现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, 5, 10],
}
gs = GridSearchCV(estimator=pipe, param_grid=params)
gs.fit(X_train, y_train)https://stackoverflow.com/questions/68253660
复制相似问题