簡體   English   中英

迭代地實例化 Sklearn 模型

[英]Instantiating Sklearn Models Iteratively

我正在嘗試迭代地創建、訓練和測試 sklearn 模型:

for min_samples_leaf in [1, 2, 3, 5]:
    for min_samples_split in [2, 3, 4, 10]:
        for n_estimators in [200, 500, 1000, 1500]:
                classifier = RandomForestClassifier(bootstrap=True, min_samples_leaf=min_samples_leaf, min_samples_split=min_samples_split, n_estimators=n_estimators, random_state=6, n_jobs=4)
                classifier.fit(X_train, y_train)
                print(accuracy_score(y_validate, classifier.predict(X_validate)))

但是,每次訓練classifier器並針對驗證集打印結果時,准確度得分都是相同的。

我的問題是(1)為什么會這樣? (2)采取這種方法的正確方法是什么?

編輯:可能需要注意的是,我也在以其他方式測量准確性以及准確性分數,並且每次迭代的結果都完全相同。

那是因為你正在訓練最后一個classifier變量值,它恰好是循環的最后一個配置。

為了解決這種情況,我建議您采用兩種方法:

  1. 在分類器分配后立即運行classifier classifier.fit() function 並將結果以最適合您的方式存儲到數組/字典中。
  2. 在第一個循環和 append 的頂部創建一個數組( classifiers =[] ),然后為您配置的每個新分類器創建一個數組,然后迭代該列表,並適合每個分類器。

更進一步

您要做的是超參數搜索,這不是最具可擴展性的方式。

您可以查看此博客條目以了解如何正確執行此操作: https://towardsdatascience.com/a-conceptual-explanation-of-bayesian-model-based-hyperparameter-optimization-for-machine-learning-b8172278050f

如果您很着急,需要立即了解如何實現超參數調整並需要示例,請參閱上述博客條目的筆記本。

https://github.com/WillKoehrsen/hyperparameter-optimization/blob/master/Bayesian%20Hyperparameter%20Optimization%20of%20Gradient%20Boosting%20Machine.ipynb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM