Python 从字符串或缓冲区加载LightGBM模型
我想从字符串或缓冲区而不是磁盘上的文件加载LightGBM模型 似乎有一种方法叫做Python 从字符串或缓冲区加载LightGBM模型,python,lightgbm,Python,Lightgbm,我想从字符串或缓冲区而不是磁盘上的文件加载LightGBM模型 似乎有一种方法叫做model\u from\u string,但是。。。它产生了一个错误,这似乎违背了我所理解的方法的目的 import boto3 import lightgbm as lgb import io model_path = 'some/path/here' s3_bucket = boto3.resource('s3').Bucket('some-bucket') obj = s3_bucket.Object(
model\u from\u string
,但是。。。它产生了一个错误,这似乎违背了我所理解的方法的目的
import boto3
import lightgbm as lgb
import io
model_path = 'some/path/here'
s3_bucket = boto3.resource('s3').Bucket('some-bucket')
obj = s3_bucket.Object(model_path)
buf = io.BytesIO()
try:
obj.download_fileobj(buf)
except Exception as e:
raise e
else:
model = lgb.Booster().model_from_string(buf.read().decode("UTF-8"))
这将产生以下错误
TypeError: Need at least one training dataset or model file to create booster instance
或者,我认为我可以使用常规加载方法
lgb.Booster(model_file=buf.read().decode("UTF-8"))
。。。但这也不起作用
FileNotFoundError: [Errno 2] No such file or directory: ''
现在,我意识到我可以通过将缓冲区写入磁盘,然后读取它来创建一个解决方案。然而,这感觉非常多余和低效
因此,我的问题是,如何在不指向磁盘上的实际文件的情况下实例化用于预测的模型?似乎有一个未记录的参数
model\u str
,可用于初始化lgb.Booster
对象
model = lgb.Booster({'model_str': buf.read().decode("UTF-8")})
资料来源:
Nikita Titov aka在GitHub的功劳