我正在编写一个稍后将优化的函数,因此我无法将数据作为参数传递给该函数。 我对函数的参数仅限于我的优化过程的参数。
我需要在函数中的某个地方传递数据,我想知道如何使用 Global 变量或类来做到这一点。 目前我正在读取函数中的"数据",这是不正确的,因为每次更新数据时,我都必须更新函数。
如果我在我的脚本中编写函数,它可以正常工作,但我正在将其编写为稍后将导入到我的脚本中的模块。
这是我的函数:
def f (args):
data = pd.read_csv('/path.to.train.data')
do something....
return something
也许将你的函数拆分开来,这样你就有一个函数来返回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')
我最终编写了一个将数据传递给内部函数的嵌套函数。
def f (args, data):
"some operations on the data"
def g(args):
return something
other operations
return something