У меня проблемы с загрузкой регрессии XGBoost с помощью pickle и joblib.
Одной из трудностей может быть тот факт, что я пишу pickle / joblib на рабочем столе Windows, но пытаюсь загрузить его на Macbook Pro
Я пытался использовать это решение, ранее опубликованное: Python 3 - может обрабатывать байтовые объекты размером более 4 ГБ?
, однако, он все равно не работает.Я получу множество ошибок, но обычно что-то вроде:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
также пытался использовать protocol = 4 в дампе pickle и joblib, и в каждом случае файл все еще не мог загрузиться.
Файлы, которые пытались загрузить, были размером от 2 ГБ до 11 ГБ на основе joblib / pickle или с использованием ранее опубликованного решения bytes_in / os.path
Кто-нибудь знает решение для оптимальных способов написания большихРегрессии XGBoost и / или как их затем загрузить?
Вот код, использованный для записи XGBoost
dmatrix_train = xgb.DMatrix(
X_train.values, y_train, feature_names=X_train.columns.values
)
dmatrix_validate = xgb.DMatrix(
X_test.values, y_test, feature_names=X_train.columns.values
)
eval_set = [(dmatrix_train,"Train")]
eval_set.append((dmatrix_validate,"Validate"))
print("XGBoost #1")
params = {
'silent': 1,
'tree_method': 'auto',
'max_depth': 10,
'learning_rate': 0.001,
'subsample': 0.1,
'colsample_bytree': 0.3,
# 'min_split_loss': 10,
'min_child_weight': 10,
# 'lambda': 10,
# 'max_delta_step': 3
}
num_round = 500000
xgb_model = xgb.train(params=params, dtrain=dmatrix_train,evals=eval_set,
num_boost_round=num_round, verbose_eval=100)
joblib.dump(xgb_model, 'file.sav', protocol=4)
Последняя строка также была опробована со стандартным дамплингом,с 'wb' и без.