我正在编写一个稍后将进行优化的函数,因此无法将数据作为参数传递给该函数。我对该函数的参数仅限于进行优化的参数。
我需要在函数中的某个地方传递数据,我想知道如何使用Global变量或类来做到这一点。当前,我正在读取函数中的“数据”,这是不正确的,因为每次数据更新时,我都必须更新该函数。
如果我在脚本中编写该函数,则该函数将正常运行。但我将其编写为模块,稍后将导入到脚本中。
这是我的功能:
def f (args):
data = pd.read_csv('/path.to.train.data')
do something....
return something
答案 0 :(得分:0)
也许将您的函数分开了,所以您将有一个函数返回xgbparams
,然后有一个函数返回dtrain
,然后有一个函数需要xgbparams
和dtrain
来完成计算。
def1():
return xgbparams
def2():
return dtrain
def3(xgbparams, dtrain);
run the thing...
此外,通过将其拆分,您将有更好的机会弄清有效的方法。
否则,如果要创建一个类,则可以使用self
,self.dtrain
来传递数据。
class myclass(object):
import xgboost as xgb
def __init__(self, data):
self.dtrain = xgb.DMatrix(data)
etc..
初始化类时,只需将其定义为输入并导入即可:
myclass('/train.buffer')
答案 1 :(得分:0)
我最终写了一个嵌套函数,将数据传递给内部函数。
def f (args, data):
"some operations on the data"
def g(args):
return something
other operations
return something