Как я могу сохранить XGboost base_learners? - PullRequest
0 голосов
/ 30 января 2019

Я изучаю модель ансамбля, используя алгоритм XGBoost

Когда я печатаю base_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_learner в другом файле, как я могу сохранить это?Я не могу использовать save_model ().потому что это не модель

И также я не могу использовать модуль рассола.Я не знаю почему.

Но я думаю, что проблемы с многопоточными ошибками.

При использовании модуля pickle я получаю следующее сообщение об ошибке:

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

Как можноЯ решил эту проблему?

1 Ответ

0 голосов
/ 30 января 2019

Попробуйте использовать библиотеку sckit learn.

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

Загрузите обученную модель из файла

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

Проверьте, работает ли она.Здесь значение test_model равно

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)

Теперь, если оно не работает для вас, вам нужно вынуть значение ключа «случайный лес» и «дополнительные деревья» и сохранить его в виде файлов рассылки.Я просто попытался сравнить это значение с моим значением, и оба выглядят в одинаковом формате.После того, как вы можете перезагрузить оба значения, вы можете восстановить исходные base_learners.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...