Skip to main content
 首页 » 编程设计

python之在 scikit-learn 中自动选择几个估计器中最好的一个

2025年05月04日11tintown

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/auto_examples/plot_compare_reduction.html#sphx-glr-auto-examples-plot-compare-reduction-py

您甚至可以定义自己的评分函数,定义“最佳”对您的意义: http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter