Я прохожу курс машинного обучения и впервые хотел создать свой собственный класс. Мне было очень приятно, когда сработала моя первая функция, но во вторую я хотел бы использовать первую сделанную мной функцию.
Я начал получать сообщение о том, что «я не определен», я погуглил и обнаружил, что мне нужно включить себя в качестве аргумента, а затем вызвать уже вырезанную функцию из новой функции. Теперь я получаю сообщение об ошибке 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 ()?