Почему мой вывод, использующий association_rules из mlxtend в python, содержит правила с "nan"? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь найти правила ассоциации, используя набор данных с

  • очень низкая поддержка для наборов элементов только с 1 элементом
  • фактический набор данных будет включать в себя 160 тыс. Точек данных

Я пытался использовать фактическое название продукта, которое в некоторых случаях очень длинное, и код продукта, APA22014.

Мой вывод всегда будет содержать следующее

{'x','nan'} -> {'y'}
{'nan'} -> {'z'}
{'z'} -> {'nan'}
{'z'} -> {'nan','y'}

Яне уверен, что вывод, который я получил, правильный или нет.Если это правильно, как мне это интерпретировать?

import pandas as pd
from pandas import DataFrame
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

txn = pd.read_csv('data v2.csv', header = None, dtype = str)
txn_list = []
for i in range(0, 1000):
    txn_list.append([str(txn.values[i,j]) for j in range(0, 10)])

te = TransactionEncoder()
te_ary = te.fit(txn_list).transform(txn_list)
df = pd.DataFrame(te_ary, columns = te.columns_)

txn_frequent_itemsets = apriori(df, min_support = 0.00000001, use_colnames = True)
txn_frequent_itemsets['length'] = txn_frequent_itemsets['itemsets'].apply(lambda x: len(x))

txn_frequent_itemsets = txn_frequent_itemsets[(txn_frequent_itemsets['length'] >= 1) &
                                              (txn_frequent_itemsets['support'] < 1)]

txn_association = DataFrame(association_rules(txn_frequent_itemsets, metric = "support", min_threshold = 0.0005))
...