Pipeline中的项目何时调用fit_transform(),何时调用transform()?(scikit-learn, Pipeline)

2 投票
1 回答
1133 浏览
提问于 2025-04-18 16:51

我正在尝试使用Pipeline来构建一个模型:

from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
from sklearn.grid_search import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler

cross_validation_object = cross_validation.StratifiedKFold(Y, n_folds = 10)
scaler = MinMaxScaler(feature_range = [0,1])
logistic_fit = LogisticRegression()

pipeline_object = Pipeline([('scaler', scaler),('model', logistic_fit)])

tuned_parameters = [{'model__C': [0.01,0.1,1,10],
                    'model__penalty': ['l1','l2']}]

grid_search_object = GridSearchCV(pipeline_object, tuned_parameters, cv = cross_validation_object, scoring = 'accuracy')

grid_search_object.fit(X_train,Y_train) 

我想问的是:best_estimator会根据训练数据的值来调整测试数据吗?比如,如果我调用:

grid_search_object.best_estimator_.predict(X_test)

它不会尝试在X_test数据上进行缩放,对吧?它只是会用原来的参数来转换数据。

谢谢!

1 个回答

2

这个predict方法不会去调整任何数据。就像你说的那样,best_estimator_这个流程会根据它在训练数据上学到的缩放方式来进行缩放。

撰写回答