scikit-learn 是否有一个运行多个其他估计器并自动选择性能最佳的估计器(例如,根据它们的交叉验证分数)?
我相信在符合估计器接口(interface)的类中一定有这样的东西,这样它就可以组合成一个pipeline。 - 正确吗?
请您参考如下方法:
您可以使用 GridSearchCV,不仅可以选择最佳估计器,还可以调整其超参数,例如,我正在使用它来寻找最佳文本分类器:
pipeline = Pipeline([
('vect', CountVectorizer(ngram_range=(2,2))),
('tfidf', TfidfTransformer(use_idf=True)),
('clf', SVC())
])
parameters = {'clf': [
SVC(),
MultinomialNB(),
BernoulliNB(),
MLPClassifier(max_iter=1000),
KNeighborsClassifier(),
SGDClassifier(max_iter=1000),
RandomForestClassifier()
]}
gs_clf = GridSearchCV(pipeline, parameters, n_jobs=-1)
gs_clf = gs_clf.fit(X, y)
print("Best score", gs_clf.best_score_)
for param_name in sorted(parameters.keys()):
print("%s: %r" % (param_name, gs_clf.best_params_[param_name]))
您甚至可以定义自己的评分函数,定义“最佳”对您的意义: http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
