Y)=X∩Y/N置信度的計算方法:confidence(X->Y)=support(X->Y)/support(X)知道支持度和置信度的計算方法之后就可以實現上面算法了,首先本題給的數據集比" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

【Python】關聯規則實例

系統 1787 0

這是最近找機器學習實習的一個筆試題:
【Python】關聯規則實例_第1張圖片
看到這個題的時候第一想法就是用關聯規則(Apriori算法)來實現。
關聯規則最重要的就是支持度Support和置信度Confidence。
支持度的計算方法:

            
              #下面式中X∩Y表示X和Y同時發生的次數,N表示總事物數
support(X->Y) = X∩Y/N

            
          

置信度的計算方法:

            
              confidence(X->Y) = support(X->Y) / support(X)

            
          

知道支持度和置信度的計算方法之后就可以實現上面算法了,首先本題給的數據集比較大,有六百多個項,因此直接對數據進行循環操作的話時間復雜度太高,我們先根據支持度對數據進行基本篩選。

            
              已知:若A->Z不滿足支持度,則AB->Z亦不滿足支持度。

            
          

因此我們先找出規則左邊只有一項且滿足支持度的數據,即初步剔除不滿足支持度的數據,代碼如下:

            
              import pandas as pd
import numpy as np
#讀取數據
path = r"Test2_Data.csv"
df = pd.read_csv(path,engine='python')
#sup支持度大于等于0.1
sup = 0.1
#N為事務數目
N = df.shape[0]
#初步篩選頻繁1項集,將df更新,其中列Label為數據的最后一列
data = df[df['Label']==1]
df = df[data.sum()[(data.sum()>=N*sup)].index]

            
          

然后根據通過雙層循環來選取滿足置信度條件的規則,其中在左邊有兩項的規則中需要加入支持度條件,代碼如下:

            
              #con置信度大于等于0.7
con = 0.7
#定義變量apriori存放符合要求的關聯規則X->Y
apriori = []
for i in range(df.shape[1]-1):
    #X->Y的置信度等于XY同時出現的次數除以X出現的次數
    #選取左邊只有一項的規則
    XY = df[(df['Label']==1)&(df.ix[:,i]==1)].shape[0]
    Y = df[df.ix[:,i]==1].shape[0]
    if(Y!=0 and XY/Y>=con):
        apriori.append(df.columns[i] + '->' + 'Label')
    elif(i == df.shape[1]-1):
        break
    for j in range(i+1,df.shape[1]-1):
        # 選取左邊有兩項的規則
        XY = df[(df['Label']==1)&(df.ix[:,i]==1)&(df.ix[:,j]==1)].shape[0]
        Y = df[(df.ix[:,i]==1)&(df.ix[:,j]==1)].shape[0]
        if(Y!=0 and XY/Y>=con and XY>=N*sup):
            apriori.append(df.columns[i]+ df.columns[j] + '->' + 'Label')

            
          

到這里就完成了這個機器學習的筆試題。

歡迎添加個人微信號:liu2536036458。
想進入交流群的,備注: 數據分析交流群


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 迁西县| 舟山市| 广南县| 民丰县| 镇巴县| 常德市| 鹤壁市| 渝中区| 巴楚县| 贵阳市| 蓝山县| 北票市| 台中县| 丰顺县| 铜山县| 吉隆县| 扎赉特旗| 喀喇| 新绛县| 龙里县| 原平市| 上栗县| 通海县| 湘西| 木里| 于田县| 岫岩| 长海县| 富锦市| 武城县| 龙山县| 彭山县| 大竹县| 德钦县| 南开区| 当雄县| 巴东县| 靖安县| 崇礼县| 黄陵县| 宝丰县|