Почему я не могу запустить "min_df = 3" в качестве параметра в моем конвейере / GridSearchCV с помощью Count Vectorizer и Logisti c Regression? - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь запустить GridSearchCV, используя конвейер с Count Vectorizer и Logisti c Regression, но я получаю сообщение об ошибке, когда я ввожу "min_df = 3" в качестве параметра. Ячейка прекрасно работает без нее (за исключением того, что она занимает более часа, потому что мой массив данных очень большой). Одна из причин, по которой я хочу установить min_df = 3, - это отключить время. Мне также нужно сделать это для конвейера с векторизатором TFIDF, а затем я снова запущу их оба в конвейере с моделью Multinomial NB и затем Random Forest. Всего будет 6 разных моделей.

Вот мой код для первой, которую я пытаюсь сделать:

pipe_cvec_lr = Pipeline([
    ('cvec', CountVectorizer()),
    ('lr', LogisticRegression(solver = 'liblinear'))
])

pipe_cvec_lr_params = {
    'cvec__ngram_range': [(1,1), (1,2)],
    'lr__penalty': ('l1', 'l2'),
    'min_df': [2]
}

gs_cvec_lr = GridSearchCV(pipe_cvec_lr,                    
                  param_grid=pipe_cvec_lr_params,
                  verbose=2,
                  cv=3) # 3-fold cross-validation.

gs_cvec_lr.fit(X_train_words, y_train);

gs_cvec_lr.score(X_test_words, y_test)

Ошибка говорит мне, что мне нужно ввести правильный параметр, но у меня сложилось впечатление, что он у меня уже введен правильно. Вот ошибка:

ValueError: Invalid parameter min_df for estimator Pipeline(memory=None,
         steps=[('cvec',
                 CountVectorizer(analyzer='word', binary=False,
                                 decode_error='strict',
                                 dtype=<class 'numpy.int64'>, encoding='utf-8',
                                 input='content', lowercase=True, max_df=1.0,
                                 max_features=None, min_df=1,
                                 ngram_range=(1, 1), preprocessor=None,
                                 stop_words=None, strip_accents=None,
                                 token_pattern='(?u)\\b\\w\\w+\\b',
                                 tokenizer=None, vocabulary=None)),
                ('lr',
                 LogisticRegression(C=1.0, class_weight=None, dual=False,
                                    fit_intercept=True, intercept_scaling=1,
                                    l1_ratio=None, max_iter=100,
                                    multi_class='auto', n_jobs=None,
                                    penalty='l2', random_state=None,
                                    solver='liblinear', tol=0.0001, verbose=0,
                                    warm_start=False))],
         verbose=False). Check the list of available parameters with `estimator.get_params().keys()`.

Кстати, если это уместно, эта модель применяется к одному столбцу / серии, содержащей около 1,1 миллиона ячеек строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...