Python中頻繁項集指的是在一組數據中經常出現的項集。在數據挖掘和機器學習中,頻繁項集是非常重要的一部分,因為它們常常可以幫助我們找到數據中的潛在規律。
import itertools
from collections import defaultdict
def find_frequent_itemsets(transactions, support_threshold):
transaction_list = list(transactions)
itemset_counts = defaultdict(int)
for transaction in transaction_list:
for item in transaction:
itemset_counts[item] += 1
num_transactions = len(transaction_list)
frequent_itemsets = {}
for itemset in itertools.combinations(itemset_counts.keys(), 1):
support = float(itemset_counts[itemset[0]]) / num_transactions
if support >= support_threshold:
frequent_itemsets[itemset] = support
k = 1
while frequent_itemsets != {}:
candidate_itemsets = {}
for itemset1 in frequent_itemsets.keys():
for itemset2 in frequent_itemsets.keys():
if len(itemset1.union(itemset2)) == k + 1:
if itemset1 != itemset2:
candidate_itemsets[itemset1.union(itemset2)] = 0
itemset_counts = defaultdict(int)
for transaction in transaction_list:
for candidate_itemset in candidate_itemsets.keys():
if candidate_itemset.issubset(transaction):
candidate_itemsets[candidate_itemset] += 1
for candidate_itemset in candidate_itemsets.keys():
support = float(candidate_itemsets[candidate_itemset]) / num_transactions
if support >= support_threshold:
frequent_itemsets[candidate_itemset] = support
k += 1
return frequent_itemsets
上面的代碼是一個Python實現的頻繁項集算法。它使用了Python中的itertools和collections模塊,以及默認字典來計算每個項集的支持度。
要使用這個算法,你需要將數據輸入到一個列表中,然后將該列表傳遞給算法的第一個參數。第二個參數是支持度閾值,用于確定哪些項集被認為是頻繁項集。
這是一個很簡單的實現,但在處理大型數據集上可能會遇到性能問題。如果你需要處理大型數據集,請考慮使用更高效的算法。
上一篇gson 解析json
下一篇python 頻率真方圖