Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串或缓冲区加载LightGBM模型_Python_Lightgbm - Fatal编程技术网

Python 从字符串或缓冲区加载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(

我想从字符串或缓冲区而不是磁盘上的文件加载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_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的功劳