Как сделать вложенную кросс-валидацию для Tfidf и RandomForestClassifier? - PullRequest
0 голосов
/ 28 апреля 2020

Я занимаюсь проблемой классификации текста, и я хотел бы выполнить 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))
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...