首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代不同sci-kit学习分类器

如何迭代不同sci-kit学习分类器
EN

Stack Overflow用户
提问于 2020-04-05 17:46:38
回答 1查看 614关注 0票数 0

我正在使用scikit运行一系列模型-学习解决分类问题。

我如何迭代不同的scikit-learn模型?

代码语言:javascript
复制
from sklearn.ensemble import AdaBoostClassifier
from sklearn.naive_bayes import BernoulliNB
from sklearn.dummy import DummyClassifier

classifiers_name = ['AdaBoostClassifier',
                    'BernoulliNB',
                    'DummyClassifier']

def fitting_classifier(clf, X_train, y_train):
    return clf.fit(X_train, y_train)

for clf_n in classifiers_name:
    locals()['results_' + clf_n] = fitting_classifier(locals()[clf_n + str(())], X_train, y_train)

我似乎在这部分代码中得到了一个错误:fitting_classifier(locals()[clf_n + str(())], X_train, y_train)。显示的错误为:

代码语言:javascript
复制
<ipython-input-31-cccf30ff4392> in summary_scores(file_path, image_format, scores)
    140         for clf_sn in classifiers_name:
--> 141             locals()['results_' + clf_n] = fitting_classifier(locals()[clf_n + str(())], X_train, y_train)
    142 
    143         # results_AdaBoostClassifier = fitting_classifier(AdaBoostClassifier(), X_train, y_train)

KeyError: 'AdaBoostClassifier()'

在这方面的任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-04-05 18:23:09

因为你没有提到这样做的目的。你到底为什么要迭代不同的scikit learn模型?

如果您正在尝试找出上述哪种模型更适合并优于其他模型,您可以使用下面这样的方法

代码语言:javascript
复制
# -------- Cross validate model with Kfold stratified cross val ---------------

    kfold = StratifiedKFold(n_splits=10)

# Modeling step Test differents algorithms
    classifiers = ['AdaBoostClassifier',
                    'BernoulliNB',
                    'DummyClassifier']
    results = []
    for model in classifiers :
        results.append(cross_val_score(model, X_train, y = y_train, scoring = "accuracy", cv = kfold, n_jobs=4))

    cv_means = []
    cv_std = []
    for cv_result in results:
        cv_means.append(cv_result.mean())
        cv_std.append(cv_result.std())

    cv_res = pd.DataFrame({"CrossValMeans":cv_means,"CrossValerrors": cv_std,"Algorithm":["AdaBoostClassifier","BernoulliNB","DummyClassifier"]})`

如果您正在尝试集成这些,请执行

分别对它们进行训练,并使用HyperParams为模型找到最佳估计器,然后使用VotingClassifier:

代码语言:javascript
复制
    DTC = DecisionTreeClassifier()
    ADB = AdaBoostClassifier(DTC)

    ada_param_grid = { # Params here }

    gsABC = GridSearchCV(ADB,param_grid = ada_param_grid , cv=kfold, scoring="accuracy", n_jobs= 4, verbose = 1)

    AdaBoost_best =gsABC.best_estimator_

 # Likewise you can do for others and then perform Voting

    votingC = VotingClassifier(estimators=[('ada', AdaBoost_best), ('nb', BernoulliNB_best),
    ('dc', DummyClassifier_best)], voting='soft', n_jobs=4)

    votingC = votingC.fit(X_train, Y_train)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61040713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档