22、python關聯規則案例代碼

1、關聯:(Association)

    把兩個或者兩個以上在意義上,有密切聯繫的項組合在一起

關聯規則(Association Rules AR)

    用於從大量數據中挖掘出有價值的數據項之間的相關關係
    
協同過濾(Collaborative Filtering,簡稱CF)

    協同過濾常常被用於分辨某位特定固定可能感興趣的東西,這些結論來自於對其他相似顧客對哪些產品感興趣的分析
    

2、關聯規則(Association Rules)

    兩個不相交的非空集合X、Y,如果有X->Y,就說X->Y是一條關聯規則
    
    強度:支持度(support)、自信度(confidence)
    效度:提升度(Lift)
    
3、挖掘定義

    給定一個數據集,找出其中所有支持度support>=min_support、自信度

confidece>=min_confidece的關聯規則

4、支持度的計算公式

    suopport(X->Y)=集合X和集合Y中的項在一條記錄中同時出現的次數/數據記錄的個數
    
    例如:
    
    support({啤酒}->{尿布})
    =啤酒和尿布同時出現的次數/記錄數
    =3/5=60%
      
5、自信度(Confidence)

confidence(X->Y)=集合X與集合Y中的項在一條記錄中同時出現的次數/集合X出現的個數

例如:

confidence({啤酒}->{尿布})
=啤酒喝尿布同時出現的次數/啤酒出現的次數=3/3=100%


6、自信度

    confidence({尿布}->{啤酒})
    =啤酒喝尿布同時出現的次數/尿布出現的次數
    =3/4
    =75%
  
7、提升度(Lift)
    
    度量規則是否可用的指標,描述的是相對於不用規則,使用規則可以提高多少,提升度大於1 ,規則有效
    
    計算公式
    lift({A-B})=confidence({A-B})/supper(B)
    
    例如:
    
    lift({尿布}->{啤酒})
    =confidence({尿布}->{啤酒})/support(啤酒)
    =0.75/0.6=1.25
    
8、 計算步驟

01 掃描數據集,統計一級候選集出現的次數

清除不滿足條件的候選相集,得到一級項集(例如:出現次數大於2)

02 從一級項集中,組合二級候選相集,統計數據集中他們出現的次數

清除不滿足條件的候選相集,得到二級項集

03 從二級項集中,組合三級候選相集,統計數據集中他們出現的次數(小於確定的3次) 停止挖掘

04 將前面得到的項集作爲結果返回

9、案例代碼

 

import pandas

import apyori

from apyori import apriori

data=pandas.read_csv('D:\\DATA\\pycase\\number2\\8.1\\Data.csv')

# apriori與pandas包輸出數據格式不兼容,所以進行格式轉換‘,

# 以列表的形式進行分許

transactions=data.groupby(by='交易ID').apply(
        lambda x: list(x.購買商品)
        )


#min_support -- The minimum support of relations (float).
#min_confidence -- The minimum confidence of relations (float).
#min_lift -- The minimum lift of relations (float).
#max_length

# 調用apriori方法

results=list(
        apriori(
                transactions
                )
# 指出度(support),先輸入空列表,再進行賦值
supports=[]
#自信度
confidences=[]
# 提升度
lifts=[]
# 基於項items_base
bases=[]
# 推導項items_add
adds=[]
for r in results:
    supports.append(r.support)
    confidences.append(r.ordered_statistics[0].confidence)
    lifts.append(r.ordered_statistics[0].lift)
    bases.append(list(r.ordered_statistics[0].items_base))
    adds.append(list(r.ordered_statistics[0].items_add))

result = pandas.DataFrame({
    'support': supports,
    'confidence': confidences,
    'lift': lifts,
    'base': bases,
    'add': adds
})

# 選擇支持度大於0.5,自信度大於0.5,提升度大於1

r=result[(result.lift>1)&(result.support>0.5)&(result.confidence>0.5)]



  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章