每次在python中调用函数时创建新对象

2024-06-01 12:03:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个需要培训的推荐系统,我在一个函数中包含了整个培训过程:

def train_model(data):
  model = Recommender() 
  Recommender.train(data)
  pred = Recommender.predict(data)
  return pred

像这样的。现在,如果我想在一个循环中对其进行训练,针对不同的数据集,如:

preds_list = []
data_list = [dataset1, dataset2, dataset3...]
for data_subset in data_list:
  preds = train_model(data_subset)
  preds_list += [preds]

我如何确保每次调用train_model函数时,都会创建一个全新的推荐者实例,而不是在以前的数据集上训练的旧实例


Tags: 数据实例函数datamodel过程系统def
2条回答

使用已实例化的实例,而不是类

    class Recommender:
        def __init__(self):
            self.id = self

        def train(self, data):
            return data

        def predict(self, data):
            return data + str(self.id)


    def train_model(data):
      model = Recommender() 
      model.train(data)
      return model.predict(data)

    data = 'a data '
    x = {}
    for i in range(3):
        x[i] = train_model(data)
        print(x[i])

    # a data <__main__.Recommender object at 0x11cefcd10>
    # a data <__main__.Recommender object at 0x11e0471d0>
    # a data <__main__.Recommender object at 0x11a064d50>

您已经在每次执行train_model时创建一个新实例。您没有使用新实例的东西。 你可能是说:

def train_model(data):
  model = Recommender() 
  model.train(data)
  pred = model.predict(data)
  return pred

相关问题 更多 >