首頁 >後端開發 >Python教學 >Python中的關聯規則挖掘技巧

Python中的關聯規則挖掘技巧

王林
王林原創
2023-06-09 23:07:352105瀏覽

Python作為一種強大的程式語言,可以應用於各種領域,包括資料探勘和機器學習。在資料探勘領域,關聯規則探勘是一個常用的技術,可以用來發現資料集中不同項之間的關係以及這些關係對其他事物的影響。本文將簡要介紹Python中的關聯規則挖掘技巧。

  1. Apriori演算法

Apriori演算法是關聯規則探勘領域的經典演算法,可用於發現資料集中的頻繁項集和關聯規則。頻繁項集是指在資料集中出現頻率較高的項目的集合,而關聯規則是指兩個或多個項之間的關係,它們可能同時出現,或其中一個出現意味著另一個也很可能出現。

Python中可以使用mlxtend函式庫中的apriori函式來實作Apriori演算法。以下是一個簡單的範例程式碼:

from mlxtend.frequent_patterns import apriori

# 构建数据集
data = [['牛奶', '面包', '啤酒'],
        ['奶酪', '面包', '黄油'],
        ['牛奶', '面包', '黄油', '鸡蛋'],
        ['奶酪', '黄油', '鸡蛋'],
        ['面包', '啤酒']]

# 使用apriori算法挖掘频繁项集
frequent_itemsets = apriori(data, min_support=0.6)

# 输出频繁项集
print(frequent_itemsets)

在上面的程式碼中,我們首先定義了一個資料集,其中包含了五個購物籃的內容。然後使用mlxtend庫中的apriori函數來挖掘頻繁項集。函數的第一個參數是資料集,第二個參數是最小支持度的閾值,這裡設定為0.6。

在輸出結果中,我們可以看到演算法找到了兩個頻繁項集:['麵包']和['牛奶', '麵包']。這意味著在這個資料集中,購買麵包的人數最多,而購買牛奶和麵包的人數其次。我們可以透過調整支持度閾值來發現不同大小的頻繁項集。

  1. 關聯規則的提取

在發現頻繁項目集之後,我們可以繼續提取關聯規則。關聯規則可以幫助我們了解某些項同時出現的機率或是其中一個項出現時另一個項也會出現的機率。

Python中可以使用mlxtend函式庫中的association_rules函數來擷取關聯規則。以下是一個簡單的範例程式碼:

from mlxtend.frequent_patterns import association_rules, apriori

data = [['牛奶', '面包', '啤酒'],
        ['奶酪', '面包', '黄油'],
        ['牛奶', '面包', '黄油', '鸡蛋'],
        ['奶酪', '黄油', '鸡蛋'],
        ['面包', '啤酒']]

# 使用apriori算法挖掘频繁项集
frequent_itemsets = apriori(data, min_support=0.6)

# 使用association_rules函数提取关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.8)

# 输出关联规则
print(rules)

在上面的程式碼中,我們首先使用Apriori演算法找到資料集中的頻繁項集。然後使用association_rules函數來提取關聯規則。函數的第一個參數是頻繁項集,第二個參數是評估關聯規則的指標,這裡選擇置信度(confidence),第三個參數是最小置信度閾值,在這裡設定為0.8。

在輸出結果中,我們可以看到演算法找到了一個置信度為1.0的關聯規則:'麵包' => '啤酒'。這意味著購買麵包的人中,同時也有100%的人購買了啤酒。這種關聯規則在推薦系統中可以用來向使用者推薦商品。

  1. FP-Growth演算法

FP-Growth演算法是關聯規則探勘領域的另一種經典演算法,它比Apriori演算法更快,並且可以處理大規模的數據集。

Python中可以使用pyfpgrowth函式庫來實作FP-Growth演算法。以下是一個簡單的範例程式碼:

import pyfpgrowth

# 构建数据集
data = [['牛奶', '面包', '啤酒'],
        ['奶酪', '面包', '黄油'],
        ['牛奶', '面包', '黄油', '鸡蛋'],
        ['奶酪', '黄油', '鸡蛋'],
        ['面包', '啤酒']]

# 使用FP-Growth算法挖掘频繁项集
patterns = pyfpgrowth.find_frequent_patterns(data, 2)

# 使用FP-Growth算法提取关联规则
rules = pyfpgrowth.generate_association_rules(patterns, 0.8)

# 输出频繁项集和关联规则
print(patterns)
print(rules)

在上面的程式碼中,我們首先定義了一個資料集,然後使用pyfpgrowth函式庫中的find_frequent_patterns函數來挖掘頻繁項集。函數的第一個參數是資料集,第二個參數是支持度閾值。在這裡,我們設定支持度閾值為2,意味著每個項集至少要在兩個購物籃中出現。函數將傳回一個字典,其中包含了所有的頻繁項集及其支持度計數。

然後使用pyfpgrowth函式庫中的generate_association_rules函數來提取關聯規則。函數的第一個參數是頻繁項集字典,第二個參數是置信度閾值。在這裡,我們設定置信度閾值為0.8。

在輸出結果中,我們可以看到演算法找到了兩個頻繁項集:('麵包',)和('麵包', '牛奶')。同時,演算法提取出了一個置信度為1.0的關聯規則:('麵包',) => ('啤酒',)。這意味著購買麵包的人中,100%的人會購買啤酒。除此之外,還可以看到其他信賴度高於0.8的關聯規則。

總結

關聯規則挖掘是一項非常有用的資料探勘技術,可以用來發現資料集中不同項之間的關係以及這些關係對其他事物的影響。 Python提供了多種方法來實現關聯規則挖掘,包括Apriori演算法和FP-Growth演算法。在具體實現中,還需要注意頻繁項集和關聯規則的閾值設置,以及如何針對實際問題進行運用。

以上是Python中的關聯規則挖掘技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn