Как правильно использовать функцию в другой функции при создании класса? - PullRequest
0 голосов
/ 05 мая 2019

Я прохожу курс машинного обучения и впервые хотел создать свой собственный класс. Мне было очень приятно, когда сработала моя первая функция, но во вторую я хотел бы использовать первую сделанную мной функцию.

Я начал получать сообщение о том, что «я не определен», я погуглил и обнаружил, что мне нужно включить себя в качестве аргумента, а затем вызвать уже вырезанную функцию из новой функции. Теперь я получаю сообщение об ошибке TypeError: trust (), в которой отсутствует 1 обязательный позиционный аргумент: «последующий».

class apriori:
    # This are different apriori algorithms.
    def __init__(self, data):
        self.data = data

    # This calculates support, col is a list of column names to calculate.
    def support(self, col, cross="Both"):
        support_result = {}
        if cross=="Both" or cross=="No":
            for item in range(len(col)):
                # Initate count of the item.
                count = 0
                for row in range(len(self.data)):
                    # Choose the row, then the column we need.
                    if self.data.iloc[row].loc[col[item]]==1:
                        # If the column has 1, then itterate count.
                        count += 1
                # Add the result to the appendix.
                support_result[col[item]] = count/len(self.data)

        # If cross==True, calculate cross support.
        if cross=="Both" or cross=="Only":
            count = 0
            for row in range(len(self.data)):
                # If both columns are 1, then itterate count.
                if self.data.iloc[row].loc[col[0]]==self.data.iloc[row].loc[col[1]]:
                    count += 1
            support_result[col[0] + ", " + col[1]] = count/len(self.data)
        return support_result

    def confidence(self, antecedent, consequent):
        ant_result = self.support(antecedent)
        union_result = self.support(list(antecedent + consequent))
        return union_result/ant_result

У меня есть набор данных с двумя столбцами, яблоками и апельсинами, где каждая строка в столбцах принимает либо 1, либо 0. Я запускаю:

apriori = apriori(df)

apple = ["apple"]
orange = ["orange"]

apriori.confidence(apple, orange)
TypeError: confidence() missing 1 required positional argument: 'consequent'

Похоже, что в качестве аргумента самообороны оно принимает яблоко, я думал, что оно "пропустит" себя и будет использовать яблоко в качестве предшественника, а апельсин - как следствие? Разве self.support не должен делать то же самое, как если бы я написал apriori.support ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...