如何保存XGboost base\u学习者?

2024-04-20 09:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习使用XGBoost算法的集成模型

当我打印base\u learners时,它似乎被存储为字典类型。 像这样:

{'dnn': <keras.engine.sequential.Sequential object at 0x000001BB50B97C88>, 'random forest': RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=4, max_features='sqrt', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=2, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=-1,
            oob_score=False, random_state=42, verbose=0, warm_start=False), 'extra trees': ExtraTreesClassifier(bootstrap=False, class_weight=None, criterion='gini',
           max_depth=4, max_features='auto', max_leaf_nodes=None,
           min_impurity_decrease=0.0, min_impurity_split=None,
           min_samples_leaf=2, min_samples_split=2,
           min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=-1,
           oob_score=False, random_state=42, verbose=0, warm_start=False)}

要在另一个文件中使用“base\u learner”,如何保存该文件? 我无法使用save\u model()。因为那不是模型

而且,我不能使用pickle模块。我不知道为什么。你知道吗

但我认为多线程错误的问题。你知道吗

使用pickle模块时,收到以下错误消息:

pickle.dump(base_learners, open('./models/base_learners.pkl', 'wb'))
TypeError: can't pickle _thread.RLock objects

如何解决这个问题?你知道吗


Tags: 模型nonefalsebaserandombootstrapminpickle
1条回答
网友
1楼 · 发布于 2024-04-20 09:21:24

尝试使用sckit学习库。你知道吗

from sklearn.externals import joblib  
joblib.dump(test_model, "trained-model.pkl")

从文件加载训练模型

test_model = joblib.load("trained-model.pkl")

检查是否有效。这里测试模型的值是

LogisticRegressionCV(Cs=3, class_weight='balanced', cv=10, dual=False,
           fit_intercept=True, intercept_scaling=1.0, max_iter=100,
           multi_class='ovr', n_jobs=-1, penalty='l2', random_state=42,
           refit=False, scoring=None, solver='lbfgs', tol=0.0001,
           verbose=0)

现在,如果它不适用于您,那么您需要取出键“random forest”和“extra trees”的值,并将其保存为pickle文件。我只是试着将这个值与我的值进行比较,两个值的格式都很相似。一旦你可以重新加载这两个值,你就可以重新创建你原来的基础。你知道吗

相关问题 更多 >