округление лифта, поддержки и уверенности до 4 десятичных знаков, но подъем становится 1 десятичным - PullRequest
0 голосов
/ 01 февраля 2020

Я использую Apyori API для создания ассоциации из моего набора данных.

#categorize central region into a basket
basket = (df
         .groupby(['Customer Name', 'Sub-Category'])['Quantity']
         .sum().unstack().reset_index().fillna(0)
         .set_index('Customer Name'))

#create a function to normalize the data
#any >1 values will return 1, any <1 values will return 0
def encode_units(x):
    if x <= 0:
        return 0
    if x>=1:
        return 1

#apply the function to basket
basket_sets = basket.applymap(encode_units)
basket_sets
#find frequent itemset, which minimum support is at least 0.35
frequent_itemsets = apriori(basket_sets, min_support=0.35, use_colnames=True)

#generate rules with corresponding support, lift and confidence
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)

a = rules[(rules['lift'] >= 1) & (rules['confidence'] >= 0.8)]
t = a.sort_values(['lift', 'confidence'], ascending=False)[['antecedents', 'consequents', 'lift', 'support', 'confidence']]

Тогда я получил результат:

    antecedents           consequents   lift    support confidence
74  (Accessories, Storage)  (Paper) 1.114737    0.353090    0.858896
166 (Storage, Furnishings)  (Paper) 1.106141    0.378310    0.852273
170 (Phones, Storage)   (Paper) 1.103379    0.372005    0.850144
146 (Binders, Storage)  (Paper) 1.094049    0.460277    0.842956
etc...

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

======================== Обновления ================== ==

Я использовал t.index = np.arange(1,len(t)+1) для замены индекса, но округление я все еще продолжал находить решение.

======================== updates2 =================== =

Хорошо, я нашел ответ, используя

t.lift = t.lift.apply(np.round, decimals=4) t.support = t.support.apply(np.round, decimals=4) t.confidence = t.confidence.apply(np.round, decimals=4)

1 Ответ

0 голосов
/ 01 февраля 2020

Хорошо, чтобы ответить на мой собственный вопрос, я действительно нашел решение, используя

t.lift = t.lift.apply(np.round, decimals=4) t.support = t.support.apply(np.round, decimals=4) t.confidence = t.confidence.apply(np.round, decimals=4

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