數(shù)據(jù)分析:關(guān)聯(lián)規(guī)則:數(shù)據(jù)分析基礎(chǔ)_第1頁
數(shù)據(jù)分析:關(guān)聯(lián)規(guī)則:數(shù)據(jù)分析基礎(chǔ)_第2頁
數(shù)據(jù)分析:關(guān)聯(lián)規(guī)則:數(shù)據(jù)分析基礎(chǔ)_第3頁
數(shù)據(jù)分析:關(guān)聯(lián)規(guī)則:數(shù)據(jù)分析基礎(chǔ)_第4頁
數(shù)據(jù)分析:關(guān)聯(lián)規(guī)則:數(shù)據(jù)分析基礎(chǔ)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)分析:關(guān)聯(lián)規(guī)則:數(shù)據(jù)分析基礎(chǔ)1數(shù)據(jù)預(yù)處理:數(shù)據(jù)清洗、轉(zhuǎn)換與集成1.1數(shù)據(jù)清洗數(shù)據(jù)清洗是數(shù)據(jù)分析過程中的關(guān)鍵步驟,旨在處理數(shù)據(jù)集中的錯(cuò)誤、不一致和缺失值。這一步驟對于確保分析結(jié)果的準(zhǔn)確性和可靠性至關(guān)重要。1.1.1示例:處理缺失值假設(shè)我們有一個(gè)銷售數(shù)據(jù)集,其中包含產(chǎn)品ID、銷售日期和銷售數(shù)量。數(shù)據(jù)集中存在一些缺失的銷售數(shù)量值,我們需要使用Python的pandas庫來處理這些缺失值。importpandasaspd

#創(chuàng)建一個(gè)包含缺失值的示例數(shù)據(jù)集

data={

'ProductID':['A','B','C','D','E'],

'SaleDate':['2023-01-01','2023-01-02','2023-01-03','2023-01-04','2023-01-05'],

'Quantity':[10,20,None,30,40]

}

df=pd.DataFrame(data)

#使用中位數(shù)填充缺失值

df['Quantity'].fillna(df['Quantity'].median(),inplace=True)

#打印處理后的數(shù)據(jù)集

print(df)1.1.2示例:處理異常值異常值是指數(shù)據(jù)集中明顯偏離其他值的觀測值。在我們的銷售數(shù)據(jù)集中,可能存在異常的銷售數(shù)量,這些數(shù)量可能由于數(shù)據(jù)錄入錯(cuò)誤或異常銷售事件。我們可以使用Z-score方法來識別并處理這些異常值。fromscipyimportstats

#計(jì)算Z-score

z_scores=stats.zscore(df['Quantity'])

#確定異常值的閾值

threshold=3

#識別并處理異常值

df=df[(z_scores<threshold)|(z_scores>-threshold)]

#打印處理后的數(shù)據(jù)集

print(df)1.2數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換涉及將數(shù)據(jù)從一種格式或結(jié)構(gòu)轉(zhuǎn)換為另一種,以適應(yīng)分析需求。這可能包括數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)標(biāo)準(zhǔn)化或數(shù)據(jù)編碼。1.2.1示例:數(shù)據(jù)標(biāo)準(zhǔn)化數(shù)據(jù)標(biāo)準(zhǔn)化是將數(shù)據(jù)轉(zhuǎn)換為具有零均值和單位方差的分布,這對于許多機(jī)器學(xué)習(xí)算法是必要的。我們可以使用scikit-learn庫中的StandardScaler來標(biāo)準(zhǔn)化銷售數(shù)量。fromsklearn.preprocessingimportStandardScaler

#創(chuàng)建StandardScaler對象

scaler=StandardScaler()

#對Quantity列進(jìn)行標(biāo)準(zhǔn)化

df['Quantity']=scaler.fit_transform(df[['Quantity']])

#打印標(biāo)準(zhǔn)化后的數(shù)據(jù)集

print(df)1.3數(shù)據(jù)集成數(shù)據(jù)集成是將來自多個(gè)數(shù)據(jù)源的數(shù)據(jù)合并到一個(gè)統(tǒng)一的數(shù)據(jù)集中的過程。這可能涉及到解決數(shù)據(jù)冗余、數(shù)據(jù)沖突和數(shù)據(jù)格式不一致的問題。1.3.1示例:合并多個(gè)數(shù)據(jù)集假設(shè)我們有兩個(gè)數(shù)據(jù)集,一個(gè)包含產(chǎn)品信息,另一個(gè)包含銷售數(shù)據(jù)。我們需要將這兩個(gè)數(shù)據(jù)集合并,以便進(jìn)行更深入的分析。#創(chuàng)建產(chǎn)品信息數(shù)據(jù)集

product_data={

'ProductID':['A','B','C','D','E'],

'ProductName':['Apple','Banana','Cherry','Date','Elderberry']

}

product_df=pd.DataFrame(product_data)

#合并數(shù)據(jù)集

merged_df=pd.merge(df,product_df,on='ProductID')

#打印合并后的數(shù)據(jù)集

print(merged_df)通過以上步驟,我們確保了數(shù)據(jù)的清潔、轉(zhuǎn)換和集成,為后續(xù)的關(guān)聯(lián)規(guī)則分析奠定了堅(jiān)實(shí)的基礎(chǔ)。2關(guān)聯(lián)規(guī)則基礎(chǔ)2.1Apriori算法原理Apriori算法是關(guān)聯(lián)規(guī)則學(xué)習(xí)中最著名的算法之一,主要用于挖掘頻繁項(xiàng)集和生成關(guān)聯(lián)規(guī)則。其核心思想是基于頻繁項(xiàng)集的特性,即如果一個(gè)項(xiàng)集是頻繁的,那么它的所有子集也應(yīng)該是頻繁的。Apriori算法通過迭代的方式,從1-項(xiàng)集開始,逐步構(gòu)建k-項(xiàng)集,直到無法找到更多的頻繁項(xiàng)集為止。2.1.1算法步驟初始化:從數(shù)據(jù)集中提取所有1-項(xiàng)集,并計(jì)算它們的支持度。頻繁項(xiàng)集生成:對于每個(gè)k-1項(xiàng)集,生成所有可能的k項(xiàng)集,并計(jì)算這些k項(xiàng)集的支持度。如果支持度大于預(yù)設(shè)的最小支持度閾值,則將其標(biāo)記為頻繁項(xiàng)集。關(guān)聯(lián)規(guī)則生成:從頻繁項(xiàng)集中生成強(qiáng)關(guān)聯(lián)規(guī)則,即滿足最小置信度閾值的規(guī)則。2.1.2代碼示例假設(shè)我們有以下交易數(shù)據(jù)集:transactions=[

['牛奶','面包','黃油'],

['面包','蘋果'],

['牛奶','面包','蘋果'],

['面包','黃油'],

['牛奶','蘋果','黃油']

]使用Python的mlxtend庫,我們可以實(shí)現(xiàn)Apriori算法:frommlxtend.preprocessingimportTransactionEncoder

frommlxtend.frequent_patternsimportapriori

#數(shù)據(jù)預(yù)處理

te=TransactionEncoder()

te_ary=te.fit(transactions).transform(transactions)

df=pd.DataFrame(te_ary,columns=te.columns_)

#應(yīng)用Apriori算法

frequent_itemsets=apriori(df,min_support=0.4,use_colnames=True)

print(frequent_itemsets)2.1.3解釋在上述代碼中,我們首先使用TransactionEncoder對交易數(shù)據(jù)進(jìn)行編碼,將其轉(zhuǎn)換為適合Apriori算法的格式。然后,我們調(diào)用apriori函數(shù),設(shè)置最小支持度為0.4,這意味著任何頻繁項(xiàng)集至少在40%的交易中出現(xiàn)。最后,我們打印出所有滿足條件的頻繁項(xiàng)集。2.2FP-growth算法介紹FP-growth(FrequentPatterngrowth)算法是另一種用于挖掘頻繁項(xiàng)集的高效算法,它通過構(gòu)建一個(gè)FP樹來減少掃描數(shù)據(jù)集的次數(shù),從而提高效率。與Apriori算法不同,F(xiàn)P-growth算法不需要生成候選集,而是直接從FP樹中挖掘頻繁項(xiàng)集。2.2.1算法步驟第一遍掃描:掃描數(shù)據(jù)集,計(jì)算每個(gè)項(xiàng)的支持度,生成頻繁1-項(xiàng)集。構(gòu)建FP樹:使用頻繁1-項(xiàng)集,構(gòu)建FP樹。每個(gè)交易中的項(xiàng)按照支持度的降序排列,并在樹中添加相應(yīng)的節(jié)點(diǎn)。挖掘頻繁項(xiàng)集:從FP樹的根節(jié)點(diǎn)開始,遞歸地挖掘頻繁項(xiàng)集。2.2.2代碼示例使用Python的fpgrowth庫,我們可以實(shí)現(xiàn)FP-growth算法:fromfpgrowth_pyimportfpgrowth

#應(yīng)用FP-growth算法

frequent_itemsets,rules=fpgrowth(transactions,minSupRatio=0.4,minConf=0.6)

print(frequent_itemsets)

print(rules)2.2.3解釋在代碼中,我們直接調(diào)用fpgrowth函數(shù),設(shè)置最小支持度比率為0.4,最小置信度為0.6。函數(shù)返回所有頻繁項(xiàng)集和滿足條件的關(guān)聯(lián)規(guī)則。2.3關(guān)聯(lián)規(guī)則的度量:支持度與置信度關(guān)聯(lián)規(guī)則的度量是評估規(guī)則強(qiáng)度和相關(guān)性的關(guān)鍵指標(biāo),主要包括支持度(Support)和置信度(Confidence)。2.3.1支持度(Support)支持度表示項(xiàng)集在所有交易中出現(xiàn)的頻率,計(jì)算公式為:Support2.3.2置信度(Confidence)置信度衡量了規(guī)則“如果X,則Y”的可靠性,計(jì)算公式為:Confidence2.3.3示例假設(shè)我們有以下頻繁項(xiàng)集:{‘牛奶’,‘面包’}:支持度=0.6{‘牛奶’,‘面包’,‘蘋果’}:支持度=0.4我們可以計(jì)算規(guī)則“如果買了牛奶和面包,則也買了蘋果”的置信度:Confidence這意味著在所有買了牛奶和面包的交易中,大約66.67%的交易也包括了蘋果。通過Apriori或FP-growth算法,我們可以進(jìn)一步生成滿足最小置信度閾值的關(guān)聯(lián)規(guī)則,以發(fā)現(xiàn)數(shù)據(jù)集中的有趣模式。3關(guān)聯(lián)規(guī)則挖掘關(guān)聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘中的一種重要技術(shù),主要用于發(fā)現(xiàn)數(shù)據(jù)集中的頻繁模式、關(guān)聯(lián)、相關(guān)性或因果結(jié)構(gòu)。在零售業(yè)、市場籃子分析、醫(yī)療診斷、網(wǎng)絡(luò)日志分析等領(lǐng)域有著廣泛的應(yīng)用。本教程將深入探討關(guān)聯(lián)規(guī)則挖掘的三個(gè)核心步驟:候選集生成、頻繁項(xiàng)集挖掘和規(guī)則生成過程。3.1候選集生成3.1.1原理在關(guān)聯(lián)規(guī)則挖掘中,首先需要生成可能的頻繁項(xiàng)集的候選集。這個(gè)過程通常從1-項(xiàng)集開始,逐步擴(kuò)展到k-項(xiàng)集,其中k是項(xiàng)集中的項(xiàng)數(shù)。生成候選集的關(guān)鍵在于如何有效地減少候選集的數(shù)量,避免不必要的計(jì)算。3.1.2內(nèi)容1-項(xiàng)集生成:從數(shù)據(jù)集中提取所有出現(xiàn)的單一項(xiàng)目,形成1-項(xiàng)集。k-項(xiàng)集生成:基于k-1項(xiàng)集,通過連接和剪枝操作生成k-項(xiàng)集。3.1.2.1示例代碼假設(shè)我們有以下交易數(shù)據(jù)集:TIDItems

1{A,B,C}

2{B,D}

3{A,B,E}

4{A,C,D}

5{B,E}#Python示例代碼

transactions=[

{'A','B','C'},

{'B','D'},

{'A','B','E'},

{'A','C','D'},

{'B','E'}

]

#生成1-項(xiàng)集

defcreateC1(dataSet):

C1=[]

fortransactionindataSet:

foritemintransaction:

ifnot[item]inC1:

C1.append([item])

C1.sort()

returnlist(map(frozenset,C1))

#生成k-項(xiàng)集

defcreateCK(Lksub1,k):

Ck=[]

len_Lksub1=len(Lksub1)

list_Lksub1=list(Lksub1)

foriinrange(len_Lksub1):

forjinrange(1,len_Lksub1):

l1=list(list_Lksub1[i])[:k-2]

l2=list(list_Lksub1[j])[:k-2]

l1.sort()

l2.sort()

ifl1==l2:

Ck.append(list_Lksub1[i]|list_Lksub1[j])

returnCk

C1=createC1(transactions)

C2=createCK(C1,2)

print("1-項(xiàng)集:",C1)

print("2-項(xiàng)集候選集:",C2)3.2頻繁項(xiàng)集挖掘3.2.1原理頻繁項(xiàng)集是指在數(shù)據(jù)集中出現(xiàn)頻率超過給定閾值的項(xiàng)集。挖掘頻繁項(xiàng)集是關(guān)聯(lián)規(guī)則挖掘的基礎(chǔ),通過頻繁項(xiàng)集可以進(jìn)一步生成關(guān)聯(lián)規(guī)則。3.2.2內(nèi)容支持度計(jì)算:支持度是衡量項(xiàng)集在數(shù)據(jù)集中出現(xiàn)頻率的指標(biāo)。頻繁項(xiàng)集篩選:根據(jù)支持度閾值,篩選出頻繁項(xiàng)集。3.2.2.1示例代碼#計(jì)算支持度

defcalcSupport(dataSet,Ck):

supportData={}

fortidindataSet:

forcaninCk:

ifcan.issubset(tid):

ifcaninsupportData:

supportData[can]+=1

else:

supportData[can]=1

returnsupportData

#篩選頻繁項(xiàng)集

defgenerateLkByCk(dataSet,Ck,minSupport):

supportData=calcSupport(dataSet,Ck)

numItems=float(len(dataSet))

Lk=[itemforiteminCkifsupportData[item]/numItems>=minSupport]

supportData={item:supportData[item]/numItemsforiteminLk}

returnLk,supportData

minSupport=0.4

C2=[{'A','B'},{'A','C'},{'A','D'},{'A','E'},{'B','C'},{'B','D'},{'B','E'},{'C','D'},{'C','E'},{'D','E'}]

L2,supportData=generateLkByCk(transactions,C2,minSupport)

print("2-項(xiàng)集頻繁項(xiàng)集:",L2)

print("支持度數(shù)據(jù):",supportData)3.3規(guī)則生成過程3.3.1原理從頻繁項(xiàng)集中生成關(guān)聯(lián)規(guī)則,需要計(jì)算規(guī)則的置信度,確保規(guī)則的可靠性。3.3.2內(nèi)容置信度計(jì)算:置信度是衡量規(guī)則A->B在頻繁項(xiàng)集中的可靠性的指標(biāo)。規(guī)則生成:根據(jù)置信度閾值,生成關(guān)聯(lián)規(guī)則。3.3.2.1示例代碼#生成關(guān)聯(lián)規(guī)則

defgenerateRules(L,supportData,minConf):

rules=[]

foriinrange(1,len(L)):

forfreqSetinL[i]:

H1=[frozenset([item])foriteminfreqSet]

ifi>1:

rulesFromConseq(freqSet,H1,supportData,rules,minConf)

else:

calcConf(freqSet,H1,supportData,rules,minConf)

returnrules

#計(jì)算置信度

defcalcConf(freqSet,H,supportData,brl,minConf):

prunedH=[]

forconseqinH:

conf=supportData[freqSet]/supportData[freqSet-conseq]

ifconf>=minConf:

print(freqSet-conseq,'-->',conseq,'conf:',conf)

brl.append((freqSet-conseq,conseq,conf))

prunedH.append(conseq)

returnprunedH

#從頻繁項(xiàng)集中生成規(guī)則

defrulesFromConseq(freqSet,H,supportData,brl,minConf):

m=len(H[0])

iflen(freqSet)>(m+1):

Hmp1=aprioriGen(H,m+1)

Hmp1=calcConf(freqSet,Hmp1,supportData,brl,minConf)

iflen(Hmp1)>1:

rulesFromConseq(freqSet,Hmp1,supportData,brl,minConf)

minConf=0.6

rules=generateRules(L2,supportData,minConf)

print("生成的關(guān)聯(lián)規(guī)則:",rules)通過以上步驟,我們可以從給定的數(shù)據(jù)集中挖掘出關(guān)聯(lián)規(guī)則,為決策支持提供有價(jià)值的信息。4關(guān)聯(lián)規(guī)則分析關(guān)聯(lián)規(guī)則分析是一種在大量數(shù)據(jù)集中發(fā)現(xiàn)變量之間有趣關(guān)聯(lián)的技術(shù),廣泛應(yīng)用于市場籃子分析、交叉銷售策略、客戶行為分析等領(lǐng)域。本教程將深入探討關(guān)聯(lián)規(guī)則的可視化、評估與優(yōu)化,以及在實(shí)際場景中的應(yīng)用。4.1關(guān)聯(lián)規(guī)則可視化關(guān)聯(lián)規(guī)則的可視化是理解規(guī)則和模式的有效方式。通過圖表,我們可以直觀地看到哪些項(xiàng)目頻繁地一起出現(xiàn),以及規(guī)則的強(qiáng)度和重要性。4.1.1示例:使用Python的matplotlib和seaborn庫進(jìn)行關(guān)聯(lián)規(guī)則可視化假設(shè)我們有以下的交易數(shù)據(jù)集:transactions=[

['牛奶','面包','黃油'],

['面包','蘋果'],

['牛奶','面包'],

['面包','黃油'],

['牛奶','蘋果','黃油'],

['牛奶','面包','蘋果'],

['蘋果','黃油'],

['牛奶','蘋果'],

['牛奶','面包','黃油'],

['面包','蘋果']

]我們可以使用mlxtend庫中的apriori和association_rules函數(shù)來生成關(guān)聯(lián)規(guī)則,然后使用seaborn和matplotlib進(jìn)行可視化。importpandasaspd

frommlxtend.preprocessingimportTransactionEncoder

frommlxtend.frequent_patternsimportapriori,association_rules

importseabornassns

importmatplotlib.pyplotasplt

#將交易數(shù)據(jù)轉(zhuǎn)換為one-hot編碼

te=TransactionEncoder()

te_ary=te.fit(transactions).transform(transactions)

df=pd.DataFrame(te_ary,columns=te.columns_)

#生成頻繁項(xiàng)集

frequent_itemsets=apriori(df,min_support=0.3,use_colnames=True)

#生成關(guān)聯(lián)規(guī)則

rules=association_rules(frequent_itemsets,metric="confidence",min_threshold=0.7)

#可視化規(guī)則的提升度

plt.figure(figsize=(10,6))

sns.barplot(x="lift",y="antecedents",data=rules)

plt.title('關(guān)聯(lián)規(guī)則的提升度')

plt.xlabel('提升度')

plt.ylabel('前件')

plt.show()在上述代碼中,我們首先使用TransactionEncoder將交易數(shù)據(jù)轉(zhuǎn)換為one-hot編碼,然后通過apriori函數(shù)生成頻繁項(xiàng)集,最后使用association_rules函數(shù)生成關(guān)聯(lián)規(guī)則。seaborn的barplot函數(shù)用于可視化規(guī)則的提升度,幫助我們識別哪些規(guī)則具有較高的關(guān)聯(lián)性。4.2規(guī)則評估與優(yōu)化關(guān)聯(lián)規(guī)則的評估通常涉及三個(gè)關(guān)鍵指標(biāo):支持度、置信度和提升度。支持度表示規(guī)則在數(shù)據(jù)集中出現(xiàn)的頻率,置信度是規(guī)則的可靠性,提升度則衡量規(guī)則的關(guān)聯(lián)強(qiáng)度是否高于隨機(jī)事件。4.2.1示例:使用Python的mlxtend庫評估和優(yōu)化關(guān)聯(lián)規(guī)則繼續(xù)使用上述交易數(shù)據(jù)集,我們可以評估生成的關(guān)聯(lián)規(guī)則,并通過調(diào)整參數(shù)來優(yōu)化規(guī)則。#評估關(guān)聯(lián)規(guī)則

print(rules[['antecedents','consequents','support','confidence','lift']])

#優(yōu)化規(guī)則:調(diào)整最小支持度和置信度

frequent_itemsets_optimized=apriori(df,min_support=0.4,use_colnames=True)

rules_optimized=association_rules(frequent_itemsets_optimized,metric="confidence",min_threshold=0.8)

print(rules_optimized[['antecedents','consequents','support','confidence','lift']])通過調(diào)整min_support和min_threshold參數(shù),我們可以優(yōu)化關(guān)聯(lián)規(guī)則,只保留那些在數(shù)據(jù)集中頻繁出現(xiàn)且具有高置信度的規(guī)則。這有助于減少規(guī)則的數(shù)量,同時(shí)保持規(guī)則的質(zhì)量。4.3關(guān)聯(lián)規(guī)則在實(shí)際場景中的應(yīng)用關(guān)聯(lián)規(guī)則分析在多個(gè)實(shí)際場景中都有應(yīng)用,包括但不限于市場籃子分析、推薦系統(tǒng)、醫(yī)療診斷等。4.3.1市場籃子分析市場籃子分析是關(guān)聯(lián)規(guī)則分析的典型應(yīng)用,它幫助零售商理解顧客的購買行為,從而優(yōu)化商品布局、促銷策略和庫存管理。4.3.2示例:使用關(guān)聯(lián)規(guī)則分析優(yōu)化商品布局假設(shè)一個(gè)超市的交易數(shù)據(jù)如下:transactions=[

['牛奶','面包','黃油'],

['面包','蘋果'],

['牛奶','面包'],

['面包','黃油'],

['牛奶','蘋果','黃油'],

['牛奶','面包','蘋果'],

['蘋果','黃油'],

['牛奶','蘋果'],

['牛奶','面包','黃油'],

['面包','蘋果']

]通過分析這些交易數(shù)據(jù),我們可以發(fā)現(xiàn)“牛奶”和“面包”經(jīng)常一起購買,而“面包”和“黃油”也有較高的關(guān)聯(lián)性。超市可以利用這些信息,將“牛奶”、“面包”和“黃油”放置在相鄰的貨架上,以促進(jìn)顧客的連帶購買。4.3.3推薦系統(tǒng)關(guān)聯(lián)規(guī)則分析也可以用于構(gòu)建推薦系統(tǒng),通過分析用戶的歷史行為,預(yù)測用戶可能感興趣的商品或服務(wù)。4.3.4示例:使用關(guān)聯(lián)規(guī)則分析構(gòu)建簡單推薦系統(tǒng)假設(shè)我們有一個(gè)用戶購買歷史數(shù)據(jù)集:user_transactions=[

['用戶1','牛奶','面包','黃油'],

['用戶2','面包','蘋果'],

['用戶3','牛奶','面包'],

['用戶4','面包','黃油'],

['用戶5','牛奶','蘋果','黃油'],

['用戶6','牛奶','面包','蘋果'],

['用戶7','蘋果','黃油'],

['用戶8','牛奶','蘋果'],

['用戶9','牛奶','面包','黃油'],

['用戶10','面包','蘋果']

]我們可以使用關(guān)聯(lián)規(guī)則分析來找出用戶購買商品之間的關(guān)聯(lián),然后基于這些規(guī)則向用戶推薦商品。例如,如果“牛奶”和“面包”之間存在強(qiáng)關(guān)聯(lián),當(dāng)用戶購買了“牛奶”時(shí),系統(tǒng)可以推薦“面包”給用戶。4.3.5醫(yī)療診斷在醫(yī)療領(lǐng)域,關(guān)聯(lián)規(guī)則分析可以用于識別疾病之間的關(guān)聯(lián),幫助醫(yī)生做出更準(zhǔn)確的診斷。4.3.6示例:使用關(guān)聯(lián)規(guī)則分析識別疾病之間的關(guān)聯(lián)假設(shè)我們有以下的疾病診斷數(shù)據(jù):diagnosis_data=[

['感冒','發(fā)燒'],

['發(fā)燒','咳嗽'],

['感冒','咳嗽'],

['發(fā)燒','咳嗽'],

['感冒','發(fā)燒','咳嗽'],

['感冒','咳嗽'],

['發(fā)燒','咳嗽'],

['感冒','發(fā)燒'],

['感冒','發(fā)燒','咳嗽'],

['發(fā)燒','咳嗽']

]通過分析這些數(shù)據(jù),我們可以發(fā)現(xiàn)“發(fā)燒”和“咳嗽”之間存在強(qiáng)關(guān)聯(lián),而“感冒”和“發(fā)燒”、“咳嗽”之間也有較高的關(guān)聯(lián)性。這可以幫助醫(yī)生在診斷時(shí),如果患者有“發(fā)燒”癥狀,可能會同時(shí)有“咳嗽”癥狀,或者如果患者有“感冒”癥狀,可能伴隨“發(fā)燒”和“咳嗽”。關(guān)聯(lián)規(guī)則分析是一種強(qiáng)大的工具,能夠揭示數(shù)據(jù)中隱藏的模式和關(guān)聯(lián),為決策提供支持。通過可視化、評估和優(yōu)化規(guī)則,以及在實(shí)際場景中的應(yīng)用,我們可以更有效地利用關(guān)聯(lián)規(guī)則分析來解決問題和創(chuàng)造價(jià)值。5案例研究5.1零售業(yè)案例:購物籃分析5.1.1原理與內(nèi)容購物籃分析是零售業(yè)中應(yīng)用關(guān)聯(lián)規(guī)則分析的典型場景。它基于顧客的購買行為,挖掘商品之間的關(guān)聯(lián)性,從而幫助零售商優(yōu)化商品布局、制定促銷策略。關(guān)聯(lián)規(guī)則分析的核心是Apriori算法,該算法通過頻繁項(xiàng)集的挖掘,找出滿足最小支持度和最小置信度的關(guān)聯(lián)規(guī)則。5.1.1.1示例:Apriori算法在購物籃分析中的應(yīng)用假設(shè)我們有以下的購物數(shù)據(jù):交易ID商品1{牛奶,面包,黃油}2{牛奶,面包}3{面包,黃油}4{牛奶,黃油}5{牛奶,面包,黃油}我們將使用Python的mlxtend庫來實(shí)現(xiàn)Apriori算法。importpandasaspd

frommlxtend.preprocessingimportTransactionEncoder

frommlxtend.frequent_patternsimportapriori,association_rules

#購物數(shù)據(jù)

data=[

['牛奶','面包','黃油'],

['牛奶','面包'],

['面包','黃油'],

['牛奶','黃油'],

['牛奶','面包','黃油']

]

#使用TransactionEncoder編碼數(shù)據(jù)

te=TransactionEncoder()

te_data=te.fit(data).transform(data)

df=pd.DataFrame(te_data,columns=te.columns_)

#應(yīng)用Apriori算法

frequent_itemsets=apriori(df,min_support=0.4,use_colnames=True)

rules=association_rules(frequent_itemsets,metric="confidence",min_threshold=0.7)

print(frequent_itemsets)

print(rules)運(yùn)行上述代碼后,我們得到的頻繁項(xiàng)集和關(guān)聯(lián)規(guī)則如下:頻繁項(xiàng)集:itemsetssupport{牛奶}0.6{面包}0.6{黃油}0.4{牛奶,面包}0.4{牛奶,黃油}0.4{面包,黃油}0.4{牛奶,面包,黃油}0.2關(guān)聯(lián)規(guī)則:antecedentsconsequentsantecedentsupportconsequentsupportsupportconfidencelift{牛奶}{面包}0.60.60.40.6666671.111111{牛奶}{黃油}0.60.40.40.6666671.666667{面包}{黃油}0.60.40.40.6666671.666667{牛奶,面包}{黃油}0.40.40.20.51.25{牛奶,黃油}{面包}0.40.60.20.50.833333{面包,黃油}{牛奶}0.40.60.20.50.833333從關(guān)聯(lián)規(guī)則中,我們可以發(fā)現(xiàn)“牛奶”和“面包”、“牛奶”和“黃油”、“面包”和“黃油”之間存在較高的置信度,表明這些商品經(jīng)常一起被購買。零售商可以利用這些信息,例如將“牛奶”和“面包”放在相鄰的貨架上,或者在“黃油”附近放置“面包”和“牛奶”的促銷廣告。5.1.2講解描述在上述示例中,我們首先定義了購物數(shù)據(jù),然后使用TransactionEncoder將數(shù)據(jù)轉(zhuǎn)換為適合Apriori算法處理的格式。接下來,我們調(diào)用apriori函數(shù)來挖掘頻繁項(xiàng)集,設(shè)置最小支持度為0.4。最后,我們使用association_rules函數(shù)來生成關(guān)聯(lián)規(guī)則,設(shè)置最小置信度為0.7。通過分析結(jié)果,我們可以發(fā)現(xiàn)商品之間的關(guān)聯(lián)性,為零售策略提供數(shù)據(jù)支持。5.2電信業(yè)案例:用戶行為分析5.2.1原理與內(nèi)容在電信業(yè)中,關(guān)聯(lián)規(guī)則分析可以用于分析用戶的行為模式,例如通話記錄、短信發(fā)送、數(shù)據(jù)使用等,以識別用戶偏好和潛在的套餐需求。這有助于電信公司優(yōu)化服務(wù),提高用戶滿意度和忠誠度。5.2.1.1示例:Apriori算法在用戶行為分析中的應(yīng)用假設(shè)我們有以下的用戶行為數(shù)據(jù):用戶ID行為1{通話,短信,數(shù)據(jù)}2{通話,數(shù)據(jù)}3{短信,數(shù)據(jù)}4{通話,短信}5{通話,短信,數(shù)據(jù)}我們將使用Python的mlxtend庫來實(shí)現(xiàn)Apriori算法。#用戶行為數(shù)據(jù)

data=[

['通話','短信','數(shù)據(jù)'],

['通話','數(shù)據(jù)'],

['短信','數(shù)據(jù)'],

['通話','短信'],

['通話','短信','數(shù)據(jù)']

]

#使用TransactionEncoder編碼數(shù)據(jù)

te=TransactionEncoder()

te_data=te.fit(data).transform(data)

df=pd.DataFrame(te_data,columns=te.columns_)

#應(yīng)用Apriori算法

frequent_itemsets=apriori(df,min_support=0.4,use_colnames=True)

rules=association_rules(frequent_itemsets,metric="confidence",min_threshold=0.7)

print(frequent_itemsets)

print(rules)運(yùn)行上述代碼后,我們得到的頻繁項(xiàng)集和關(guān)聯(lián)規(guī)則如下:頻繁項(xiàng)集:itemsetssupport{通話}0.6{短信}0.6{數(shù)據(jù)}0.4{通話,短信}0.4{通話,數(shù)據(jù)}0.4{短信,數(shù)據(jù)}0.4{通話,短信,數(shù)據(jù)}0.2關(guān)聯(lián)規(guī)則:antecedentsconsequentsantecedentsupportconsequentsupportsupportconfidencelift{通話}{短信}0.60.60.40.6666671.111111{通話}{數(shù)據(jù)}0.60.40.40.6666671.666667{短信}{數(shù)據(jù)}0.60.40.20.3333331.0{通話,短信}{數(shù)據(jù)}0.40.40.20.51.25{通話,數(shù)據(jù)}{短信}0.40.60.20.50.833333{短信,數(shù)據(jù)}{通話}0.40.60.20.50.833333從關(guān)聯(lián)規(guī)則中,我們可以發(fā)現(xiàn)“通話”和“短信”、“通話”和“數(shù)據(jù)”之間存在較高的置信度,表明這些行為經(jīng)常一起出現(xiàn)。電信公司可以利用這些信息,例如為經(jīng)常同時(shí)使用通話和短信服務(wù)的用戶提供套餐優(yōu)惠,或者為數(shù)據(jù)使用頻繁的用戶提供更多的數(shù)據(jù)流量。5.2.2講解描述在用戶行為分析的示例中,我們同樣使用TransactionEncoder將用戶行為數(shù)據(jù)轉(zhuǎn)換為適合Apriori算法處理的格式。然后,我們調(diào)用apriori函數(shù)來挖掘頻繁項(xiàng)集,設(shè)置最小支持度為0.4。最后,我們使用association_rules函數(shù)來生成關(guān)聯(lián)規(guī)則,設(shè)置最小置信度為0.7。通過分析結(jié)果,電信公司

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論