Вот несколько строк кода:
import pandas as pd
import numpy as np
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
def encode_c(x):
if x <= 0:
return 0
if x >= 1:
return 1
return 0
def get_product_consequents():
all_transactions_df = get_dataframe()
basket = (all_transactions_df.groupby(['a', 'b'])['c']
.sum().unstack().reset_index().fillna(0)
.set_index('a'))
basket = basket.applymap(encode_c)
frequent_itemsets = apriori(basket, min_support=0.07, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift",
min_threshold=1)
rules['antecedants_length'] = rules['antecedents'].str.len()
rules['consequents_length'] = rules['consequents'].str.len()
rules = rules[(rules['lift'] >= 4) & # 6
(rules['confidence'] >= 0.4)] # 0.8
rules = rules[(rules['antecedants_length'] == 1) &
(rules['consequents_length'] == 1)]
rules = (rules.groupby(['antecedants'])['consequents'])
ИЗОБРАЖЕНИЕ 1
ИЗОБРАЖЕНИЕ 2
Когда я ДЕЛАЮ: Изучение априори от
rules["antecedant_len"] = rules["antecedents"].apply(lambda x: len(x))
Я ПОЛУЧАЮ:
ИЗОБРАЖЕНИЕ 1
C:\Program Files\JetBrains\PyCharm 2018.1.4\helpers\pydev\_pydevd_bundle
\pydevd_resolver.py:71:
FutureWarning: Series.strides is deprecated
and will be removed in a future version
return getattr(var, attribute)
Я делал это из: mlxtend association_rules и apriori docs
Как говорит ошибка: Series.strides
устарели.
Так, как я могу найти длину каждого frozenset
в серии? то есть сделать то же, что и выше?
ОСНОВНАЯ ОШИБКА
ИЗОБРАЖЕНИЕ 2
rules = (rules.groupby(['antecedants'])['consequents'])
После оценки выше строки:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_vars.py", line 376, in
evaluate_expression compiled = compile(expression, '<string>', 'eval')
File "<string>", line 1
rules = (rules.groupby(['antecedants'])['consequents'])
^
SyntaxError: invalid syntax
----- ПОЧЕМУ синтаксическая ошибка, хотя она отлично работает на JUPYTER NOTEBOOK?
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 1159, in do_it
result = pydevd_vars.evaluate_expression(self.thread_id, self.frame_id,
self.expression, self.doExec)
File "C:\Program Files\JetBrains\PyCharm
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_vars.py", line 378, in
evaluate_expression
Exec(expression, updated_globals, frame.f_locals)
File "C:\Program Files\JetBrains\PyCharm
2018.1.4\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
exec(exp, global_vars, local_vars)
File "<string>", line 1, in <module>
File "C:\ProjcetPath\venv\lib\site-
packages\pandas\core\generic.py", line 6659, in groupby
observed=observed, **kwargs)
File "C:\ProjcetPath\venv\lib\site-
packages\pandas\core\groupby\groupby.py", line 2152, in groupby
return klass(obj, by, **kwds)
File "C:\ProjcetPath\venv\lib\site-
packages\pandas\core\groupby\groupby.py", line 599, in __init__
mutated=self.mutated)
File "C:\ProjcetPath\venv\lib\site-
packages\pandas\core\groupby\groupby.py", line 3291, in _get_grouper
raise KeyError(gpr)
KeyError: 'antecedants'
--- Наконец, он сообщает об ошибке ключа, во время обработки syntax
ошибка key
ошибка произошла, наверняка это не ошибка ключа, как я вижу столбец в sciView
, также я могу получить к нему доступ, это было как сделано в приведенных выше строках кода.
ДРУГАЯ ИНФОРМАЦИЯ : Я также использую Django
.