Я написал программу на python, чтобы попытаться оценить мои ML-прогнозы, используя объектно-ориентированное программирование, и я пытаюсь объединить функции в цепочку. Как сказать:
answers = predictionsGrader().merge_on('PassengerId').compare("Survived_x", "Survived_y").grade()
Однако мой код начал выдавать ошибки атрибута error.
AttributeError: 'NoneType' object has no attribute 'compare'
Пытаясь понять, в чем проблема, я понял, что хотя инициализация возвращала объект,
<class 'predictionsGrader.predictionsGrader'>
функция, которая была вызвана после инициализации (которая является merge_on
функцией), возвращала NoneType
<class 'NoneType'>
Пожалуйста, что может быть не так. Вот полный код:
import pandas as pd
class predictionsGrader():
def __init__(self, predictions, target):
self.correct = []
self.predictions = predictions
self.target = target
return
def merge_on(self, row):
self.row = row
self.md = pd.merge(self.predictions, self.target, on=[self.row])
return
def compare(self, predicted_target, confirmed_target):
self.predicted_target = predicted_target or "predicted_target"
self.confirmed_target = confirmed_target or "confirmed_target"
return
def grade(self):
for x in range(len(self.md[self.predicted_target])):
if (self.md[self.predicted_target][x] == self.md[self.confirmed_target][x]):
self.correct.append("right")
else:
self.correct.append("wrong")
return self.correct