Я занимаюсь проблемой классификации текста, и я хотел бы выполнить GridsearchCV для TfidfVectorizer()
и RandomForestClassifier()
, чтобы получить два словаря с наилучшими параметрами для обоих методов вместе взятых. Есть ли способ сделать это с sklearn.Pipeline
каким-то образом? На мой взгляд, что-то вроде этого:
df = pd.read_csv('DATASET.csv', dtype=str)
X_train, X_test, y_train, y_test = train_test_split(df['token'],
df['label'],
test_size=0.30,
random_state=8)
# parameters for tf_idf
# Setting params for TFidfVectorizer gridsearch
tfidf_params = {
'ngram_range': [(1, 1), (1, 2), (2, 2)],
'min_df':[0.001, 0.01, 0.1],
'max_df':[0.7, 0.8, 0.9],
'max_features': 300, 1000, 3000, None]
}
# Setting params for RandomForestC gridsearch
rfc_params = {
'bootstrap': [True, False],
'max_depth': [20, 40, 60, 80, 100, None],
'max_features': ['auto', 'sqrt'],
'min_samples_leaf': [1, 2, 4],
'min_samples_split': [2, 5, 10],
'n_estimators': [200, 400, 600, 800, 1000],
'class_weight'=class_weights}
# Pipeline & Gridsearch setup
# pipeline setup
pipe = Pipeline([
('tfidf_gs', GridSearchCV(estimator=TfidfVectorizer(), param_grid=tfidf_params)),
('rfc_gs', GridSearchCV(estimator=RandomForestClassifier(), param_grid=rfc_params))
])