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

Python中的關聯規則挖掘技巧

Jun 09, 2023 pm 11:07 PM
python 關聯規則 挖掘技巧

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

Rimworld Odyssey溫度指南和Gravtech
1 個月前 By Jack chen
初學者的Rimworld指南:奧德賽
1 個月前 By Jack chen
PHP變量範圍解釋了
4 週前 By 百草
撰寫PHP評論的提示
3 週前 By 百草
在PHP中評論代碼
3 週前 By 百草

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1604
29
PHP教程
1509
276
如何在Python中創建虛擬環境 如何在Python中創建虛擬環境 Aug 05, 2025 pm 01:05 PM

創建Python虛擬環境可使用venv模塊,步驟為:1.進入項目目錄執行python-mvenvenv創建環境;2.Mac/Linux用sourceenv/bin/activate、Windows用env\Scripts\activate激活;3.使用pipinstall安裝包、pipfreeze>requirements.txt導出依賴;4.注意避免將虛擬環境提交到Git,並確認安裝時處於正確環境。虛擬環境能隔離項目依賴防止衝突,尤其適合多項目開發,編輯器如PyCharm或VSCode也

如何在Python中執行SQL查詢? 如何在Python中執行SQL查詢? Aug 02, 2025 am 01:56 AM

安裝對應數據庫驅動;2.使用connect()連接數據庫;3.創建cursor對象;4.用execute()或executemany()執行SQL並用參數化查詢防注入;5.用fetchall()等獲取結果;6.修改後需commit();7.最後關閉連接或使用上下文管理器自動處理;完整流程確保安全且高效執行SQL操作。

如何在Python中的多個過程之間共享數據? 如何在Python中的多個過程之間共享數據? Aug 02, 2025 pm 01:15 PM

使用multiprocessing.Queue可在多個進程間安全傳遞數據,適合多生產者和消費者的場景;2.使用multiprocessing.Pipe可實現兩個進程間的雙向高速通信,但僅限兩點連接;3.使用Value和Array可在共享內存中存儲簡單數據類型,需配合Lock避免競爭條件;4.使用Manager可共享複雜數據結構如列表和字典,靈活性高但性能較低,適用於復雜共享狀態的場景;應根據數據大小、性能需求和復雜度選擇合適方法,Queue和Manager最適合初學者使用。

Python Boto3 S3上傳示例 Python Boto3 S3上傳示例 Aug 02, 2025 pm 01:08 PM

使用boto3上傳文件到S3需先安裝boto3並配置AWS憑證;2.通過boto3.client('s3')創建客戶端並調用upload_file()方法上傳本地文件;3.可指定s3_key作為目標路徑,若未指定則使用本地文件名;4.應處理FileNotFoundError、NoCredentialsError和ClientError等異常;5.可通過ExtraArgs參數設置ACL、ContentType、StorageClass和Metadata;6.對於內存數據,可使用BytesIO創建字

如何使用Python中的列表實現堆棧數據結構? 如何使用Python中的列表實現堆棧數據結構? Aug 03, 2025 am 06:45 AM

PythonlistScani ImplementationAking append () Penouspop () Popopoperations.1.UseAppend () Two -Belief StotetopoftHestack.2.UseP OP () ToremoveAndreturnthetop element, EnsuringTocheckiftHestackisnotemptoavoidindexError.3.Pekattehatopelementwithstack [-1] on

Python時間表庫示例 Python時間表庫示例 Aug 04, 2025 am 10:33 AM

使用Pythonschedule庫可輕鬆實現定時任務,首先通過pipinstallschedule安裝庫,接著導入schedule和time模塊,定義需要定時執行的函數,然後使用schedule.every()設置時間間隔並綁定任務函數,最後通過while循環中調用schedule.run_pending()和time.sleep(1)持續運行任務;例如每10秒執行一次任務可寫為schedule.every(10).seconds.do(job),支持按分鐘、小時、天、周等週期調度,也可指定具體

如何在崇高文本中運行Python代碼 如何在崇高文本中運行Python代碼 Aug 04, 2025 pm 04:25 PM

EnsurePythonisinstalledandaddedtoPATHbycheckingversioninterminal;2.Savefilewith.pyextension;3.UseCtrl Btorunviadefaultbuildsystem;4.CreateacustombuildsystemifneededbygoingtoTools>BuildSystem>NewBuildSystem,enteringthecorrectcmdforyourPythonvers

在Python中調試內存洩漏的常見策略是什麼? 在Python中調試內存洩漏的常見策略是什麼? Aug 06, 2025 pm 01:43 PM

Usetracemalloctotrackmemoryallocationsandidentifyhigh-memorylines;2.Monitorobjectcountswithgcandobjgraphtodetectgrowingobjecttypes;3.Inspectreferencecyclesandlong-livedreferencesusingobjgraph.show_backrefsandcheckforuncollectedcycles;4.Usememory_prof

See all articles