數據分析-APRIORI算法

概念

  1. 支持度:指某個組合商品出現的次數與總數之間的比例
  2. 置信度:條件概念,在A發生的情況下,B發生的概率
  3. 提升度: 提升度(A->B) = 置信度(A->B)/支持度(B) 這是用來衡量A出現的情況下,是否會對B出現的概率有提升。若提升度大於1說明有,等於1說明沒有,小於1說明會導致B下降。

APRIORI算法的工作原理

  • 說白了Apriori算法就是查找頻繁項集(Frequent Itemset)的過程- 頻繁項集:支持度大於等於最小支持度(Min support)閾值的項集- 算法流程:
  1. K=1,計算K項集的支持度
  2. 篩選掉小於最下支持度的項集
  3. 如果項集爲空,則對應K-1項集的結果爲最終結果,否則K=K+1重複1-3

APRIORI算髮的缺點

  1. 可能產生大量的候選集2. 每次計算都需要重新掃描數據集,來計算每個項集的支持度3. 浪費大量的時間和空間

FP-Growth算法

  • 針對APRIORI算法的缺點,FP-Growth算法創建了一顆FP樹來存儲頻繁項集。在創建前對不滿足最小支持度的項進行刪除,減少存儲空間,並且整個生成過程,只遍歷數據集兩次

FP-Growth算法的流程

  1. 創建項頭表(包括項目、支持度),以及該項在FP樹中的鏈表(初始爲空)
  2. 構造FP樹,按照支持度從高到低的順序創建節點,節點如果存在就將計數countr+1 ,不存在就進行創建。
  3. 通過FP樹挖掘頻繁項集。

Python實戰

導入相關的jar包

pip install efficient_aprioi

`### 核心代碼

itemset, rules = apriori(data, min_support, min_cofidence)
  • data:要提供的數據集(LIST類型)
  • min_support:最小支持度
  • min_cofidence:最小置信度
  • itemset:頻繁項集
  • rules:頻繁規則

挖掘王晶選演員的特點

  1. 首先獲取王晶導演的電影,並且爬取電影的演員信息,信息如下(後面有時間我會寫如何獲取信息):1 (2).png2. python代碼
# -*- coding: utf-8 -*-
from efficient_apriori import apriori
import pandas as pd
import numpy as np
df = pd.read_csv("ninghao.csv", encoding='utf-8-sig')
stars = np.array(df['stars'])
data = []
for star in stars:
    names = star.split(',')
    new_name = []
    for name in names:
        tmp = name[2:-2]
        new_name.append(tmp)
    if len(new_name)>1:
        data.append(new_name)
print(data)
itemsets, rules = apriori(data, min_support=0.1, min_confidence=1)
print(itemsets)
print(rules)
  1. 結果如圖
  • itemsets 2.png
  • 可以看出甯浩導演喜歡黃渤和徐崢搭配
  • rules
  • 3.png
  • 可以看出有黃渤的話基本會有甯浩自己
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章