版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年血液體液診斷產(chǎn)品合作協(xié)議書
- 2024年視窗防護(hù)屏合作協(xié)議書
- 九年級化學(xué)上冊第1章開啟化學(xué)之門易錯(cuò)題練習(xí)滬教版
- 辦理臨時(shí)牌照委托書
- 學(xué)期計(jì)劃范例集錦九篇
- 父母感恩演講稿集錦10篇資料
- 食品安全檢測知識復(fù)習(xí)考試題庫(帶答案)
- 公司感謝信范文集合五篇
- 滬教版九年級化學(xué)上冊月考考試卷
- 新學(xué)期的計(jì)劃范文集合5篇
- 關(guān)于語文課堂小練筆的問卷調(diào)查匯總
- 大氣污染控制工程課程設(shè)計(jì)——靜電除塵器
- 滬教版三年級上語文第二單元測驗(yàn)卷
- 鎖腳錨管施工工藝工法
- 項(xiàng)目安全文明標(biāo)準(zhǔn)化施工的主要業(yè)績、做法和經(jīng)驗(yàn)
- 患者參與醫(yī)療安全情況檢查表
- 成形車刀及刃磨相關(guān)知識
- 特種設(shè)備事故應(yīng)急預(yù)案演練記錄表
- DB37∕T 4447-2021 水利工程輸水管道施工質(zhì)量驗(yàn)收評定規(guī)范
- PPT制作比賽評分細(xì)則
- Symbol LS7708掃描平臺常用設(shè)置條碼
評論
0/150
提交評論