Я практикуюсь с текстом, используя scikit-learn.
Чтобы лучше познакомиться с GridSearch, я начну с примера кода, который можно найти здесь а>:
###############################################################################
# define a pipeline combining a text feature extractor with a simple
# classifier
pipeline = Pipeline([
('vect', CountVectorizer())
])
parameters = {
'vect__max_df': (0.5, 0.75, 1.0)
}
grid_search.fit(X_train, y_train)
print("Best score: %0.3f" % grid_search.best_score_)
Заметьте, я очень осторожен, и у меня есть только одна оценка и один параметр!
Я обнаружил, что когда я запускаю это, я получаю сообщение об ошибке:
TypeError: If no scoring is specified, the estimator passed should have a 'score' method. The estimator Pipeline(steps=[('vect', CountVectorizer(analyzer=u'word', binary=False, decode_error=u'strict',
dtype=<type 'numpy.int64'>, encoding=u'utf-8', input=u'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'(?u)\\b\\w\\w+\\b',
tokenizer=None, vocabulary=None))]) does not.
Хммм... почему мне не хватает какого-то атрибута "оценка"?
Когда я проверяю возможные параметры,
print CountVectorizer().get_params().keys()
Я не вижу ничего, где я мог бы выиграть, как это подразумевает этот ответ.
В документации сказано By default, parameter search uses the score function of the estimator to evaluate a parameter setting.
Так зачем мне указывать метод оценки?
Несмотря на это, я думал, что мне может понадобиться явно передать аргумент scoring
, но это не помогло и выдало мне ошибку: grid_search.fit(X_train, y_train, scoring=None)
Я не понимаю эту ошибку!