Создание нового объекта каждый раз, когда вы вызываете функцию в python - PullRequest
0 голосов
/ 15 января 2020

У меня есть система рекомендаций, которую мне нужно тренировать, и я включил всю процедуру обучения в функцию:

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

что-то вроде этого. Теперь, если я хочу обучить это внутри al oop, для разных наборов данных, таких как:

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

Как я могу быть уверен, что каждый раз, когда я вызываю функцию train_model, новый экземпляр Рекомендатель создан, а не старый, обученный на предыдущем наборе данных?

Ответы [ 2 ]

3 голосов
/ 15 января 2020

Вы уже создаете новый экземпляр каждый раз, когда выполняете train_model. То, что вы не используете новый экземпляр. Вы, вероятно, имели в виду:

def train_model(data):
  model = Recommender() 
  model.train(data)
  pred = model.predict(data)
  return pred
0 голосов
/ 15 января 2020

Используйте экземпляр, который вы создали, а не класс

    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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...