python - 如何将经过训练的 xgboost 基础模型参数加载到 xgboost sklearn API 中?
问题描述
当使用基本 API(即 xgboost.train(args))在 Python 中训练和保存 xgboost 模型时,我们可以使用 .save_model() 保存参数:
import xgboost
model = xgboost.train(args) # Learning API
model.save_model(args)
loaded_model = xgboost.XGBRegressor() # Scikit-Learn API
loaded_model.load_model(args)
我们如何将这个经过训练的模型加载到 xgboost sklearn API 中?我的目标是将经过训练的 xgboost 模型(使用 Learning API 训练)作为拟合模型加载到 xgboost Scikit-Learn API 中,这样我就可以利用其他 sklearn 函数。
我在上面代码中包含的方法不允许加载的模型与其他 sklearn 函数一起使用,当我尝试在模型上使用其他 sklearn 函数时,我得到了 NotFittedError。
这是我正在使用的模型的 Python API 的链接:https ://xgboost.readthedocs.io/en/latest/python/python_api.html
我正在使用“Learning API”训练模型并尝试将模型加载到“Scikit-Learn API”中。
解决方案
假设您使用了标准分类器或scikit-learn
包模型之一,您可以使用以下方法保存和加载模型pickle
:
import pickle
model.train(X)
saved_model = pickle.dumps(model)
# Load the pickled model
loaded_model = pickle.loads(saved_model)
# Using the loaded model to predict new data
loaded_model.predict(X_test)
您还可以将其保存saved_model
到任意文件中,然后再加载。
import pickle
model.train(X)
file_pi = open('model.obj', 'w')
pickle.dump(model, file_pi)
# Load the pickled model
filehandler = open(filename, 'r')
loaded_model = pickle.load(filehandler)
# Using the loaded model to predict new data
loaded_model.predict(X_test)
推荐阅读
- javascript - 错误:重新渲染过多。React 限制了渲染的数量以防止无限循环。具有嵌套函数的自定义钩子
- python - (Python 3.8) How can I turn a variable into a list without a seperator?
- docker - 解决 Docker 层缓存在 Azure Pipeline 中不起作用的问题
- javascript - 尝试部署 NextJS 应用程序时,我收到一条错误消息,指出“无法解析 'pnpapi'”
- kotlin - Jetpack compose:可以设置 DropdownMenu 高度以显示下一项
- rxjs - 如何展平在 rxjs 之后产生的嵌套 observables
- go - 为什么我的解决方案对于 go slices 练习不正确?
- css - 尝试使用固定位置渲染多个相互重叠的侧边栏,但第二个侧边栏在悬停时闪烁
- angular - Angular - 通过给定数据自动填充嵌套表单
- arrays - 使用yup验证的reactjs中的数组长度为零