日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2022高教社杯数学建模思路 - 案例:Apriori-关联规则挖掘算法

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2022高教社杯数学建模思路 - 案例:Apriori-关联规则挖掘算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2022 高教社杯(國賽數學建模)思路解析

2022高教社杯ABCD賽題思路解析:

https://blog.csdn.net/dc_sinor/article/details/126211983


1 啤酒和尿布

Apriori算法是一種用于挖掘數據集內部關聯規則的算法,“apriori”在拉丁語中翻譯為“來自以前”,聽意思你應該就能猜到了,這個算法是用先驗知識來預測數據的關聯規則的。

說到關聯規則,有一個很有名的案例——啤酒與尿布。說,美國一家連鎖店發現很多男性會在周四購買尿布和啤酒,這兩種看似不相干的商品之間顯現出強相關性,于是商家可以將啤酒貨架放在尿布貨架旁邊以增加收益。

那么,啤酒與尿布的關系是如何被發現的呢?當然是通過關聯算法,我們從Apriori算法開始吧,利用Apriori進行關聯分析。

2 Apriori原理

先介紹兩個概念

  • 支持度support:數據集中包含該項集的數據所占數據集的比例,度量一個集合在原始數據中出現的頻率
  • 置信度confidence:是針對一條關聯規則來定義的,a->b的置信度=支持度{a|b}/支持度{a},a|b表示ab的并集

關聯分析有兩個目標:

  • 發現頻繁項集(頻繁項集是滿足最小支持度要求的項集,它給出經常在一起出現的元素項)
  • 發現關聯規則(關聯規則意味著元素項之間“如果…那么…”的關系)

Apriori原理

如果某個項集是頻繁的,那么它的所有子集也是頻繁的
如果某個項集是非頻繁的,那么它的所有超集也是非頻繁的
基于此,Apriori算法從單元素項集開始,通過組合滿足最小支持度的項集來形成更大的集合
其實Apriori就是通過排除法來選擇頻繁項集和關聯規則,下面我們根據這樣的原理用python實現算法。

3 Apriori代碼實現

3.1 挖掘頻繁項集

挖掘頻繁項集的邏輯如下圖

#加載數據集 def loadDataSet():return [[1,3,4],[2,3,5],[1,2,3,5],[2,5]]#選取數據集的非重復元素組成候選集的集合C1 def createC1(dataSet):C1=[]for transaction in dataSet: #對數據集中的每條購買記錄for item in transaction: #對購買記錄中的每個元素if [item] not in C1: #注意,item外要加上[],便于與C1中的[item]對比C1.append([item])C1.sort()return list(map(frozenset,C1)) #將C1各元素轉換為frozenset格式,注意frozenset作用對象為可迭代對象#由Ck產生Lk:掃描數據集D,計算候選集Ck各元素在D中的支持度,選取支持度大于設定值的元素進入Lk def scanD(D,Ck,minSupport):ssCnt={}for tid in D: #對數據集中的每條購買記錄for can in Ck: #遍歷Ck所有候選集if can.issubset(tid): #如果候選集包含在購買記錄中,計數+1ssCnt[can]=ssCnt.get(can,0)+1numItems=float(len(D)) #購買記錄數retList=[] #用于存放支持度大于設定值的項集supportData={} #用于記錄各項集對應的支持度for key in ssCnt.keys():support=ssCnt[key]/numItemsif support>=minSupport:retList.insert(0,key)supportData[key]=supportreturn retList,supportData#由Lk產生Ck+1 def aprioriGen(Lk,k): #Lk的k和參數k不是同一個概念,Lk的k比參數k小1retList=[]lenLk=len(Lk)for i in range(lenLk):for j in range(i+1,lenLk): #比較Lk中的每一個元素與其他元素L1=list(Lk[i])[:k-2];L2=list(Lk[j])[:k-2]L1.sort();L2.sort()if L1==L2: #若前k-2項相同,則合并這兩項retList.append(Lk[i]|Lk[j])return retList#Apriori算法主函數 def apriori(dataSet,minSupport=0.5):C1=createC1(dataSet)D=list(map(set,dataSet))L1,supportData=scanD(D,C1,minSupport)L=[L1]k=2while len(L[k-2])>0: #當L[k]為空時,停止迭代Ck=aprioriGen(L[k-2],k) #L[k-2]對應的值是Lk-1Lk,supK=scanD(D,Ck,minSupport)supportData.update(supK)L.append(Lk)k+=1return L,supportData

我們來測試一下

dataset=loadDataSet() C1=createC1(dataset) D=list(map(set,dataset)) L1,supportData0=scanD(D,C1,0.5) L,supportData=apriori(dataset,minSupport=0.5)


可以看到,頻繁項集如上圖,{1,2,3,5,{2,3},{3,5},{2,5},{1,3},{2,3,5}}都是頻繁項集。得到了頻繁項集,接下來我們看看頻繁項集之間的關聯規則。

3.2 從頻繁項集挖掘關聯規則

挖掘關聯規則原理如下:若某條規則不滿足最小置信度要求,則該規則的所有子集也不滿足最小置信度要求

# 主函數,由頻繁項集以及對應的支持度,得到各條規則的置信度,選擇置信度滿足要求的規則為關聯規則 # 為了避免將所有數據都對比一遍,采用與上述相同的邏輯減少計算量——一層一層計算篩選 def generateRules(L,supportData,minConf=0.7):bigRuleList=[]for i in range(1,len(L)):for freqSet in L[i]:H1=[frozenset([item]) for item in freqSet] # H1是頻繁項集單元素列表,是關聯規則中a->b的b項if i>1:rulesFromConseq(freqSet,H1,supportData,bigRuleList,minConf)else:calConf(freqSet,H1,supportData,bigRuleList,minConf)return bigRuleList# 置信度計算函數 def calConf(freqSet,H,supportData,brl,minConf=0.7):prunedH=[] # 用于存放置信度滿足要求的關聯規則的b項,即“提純后的H”for conseq in H:conf=supportData[freqSet]/supportData[freqSet-conseq]if conf>=minConf:print (freqSet-conseq,'-->',conseq,'conf:',conf)brl.append([freqSet-conseq,conseq,conf])prunedH.append(conseq)return prunedH# 關聯規則合并函數 def rulesFromConseq(freqSet,H,supportData,brl,minConf=0.7):m=len(H[0])if len(freqSet)>(m+1): #查看頻繁項集freqSet是否大到可以移除大小為m的子集Hmp1=aprioriGen(H,m+1) # 從Hm合并Hm+1Hmp1=calConf(freqSet,Hmp1,supportData,brl,minConf)if len(Hmp1)>1: #若合并后的Hm+1的元素大于1個,則繼續合并rulesFromConseq(freqSet,Hmp1,supportData,brl,minConf)


可以看到,如果有5那么必定有2,如果有3,那么66.7%的可能性有2,5……

3.3 總結

本文簡述關聯分析算法Apriori算法的原理,然后用python3進行了實操,需要注意的是,Apriori算法的缺點——每次增加頻繁項集大小時(即Ck->Lk時),算法需要重新掃描整個數據集,當數據集很大時,算法效率很低。

解決方法是FP-Growth算法,這個算法我們下一次講解。


2022 高教社杯(國賽數學建模)思路解析

2022高教社杯ABCD賽題思路解析:

https://blog.csdn.net/dc_sinor/article/details/126211983


總結

以上是生活随笔為你收集整理的2022高教社杯数学建模思路 - 案例:Apriori-关联规则挖掘算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: wwwxxx亚洲 | 少妇专区 | 人人看人人艹 | 日韩欧美在线免费观看 | 操操操操操操 | 河北彩花69xx精品一区 | 波多野结衣乳巨码无在线观看 | 高清一级片 | 天天操天天射天天爽 | 亚洲性综合 | 国产精品视频专区 | 精品国产大片大片大片 | 中文字幕在线精品 | 亚洲精品91在线 | 日韩一级免费毛片 | 鲁丝一区二区三区 | 日韩免费一二三区 | 天天干夜夜玩 | 99热8| 欧美巨大荫蒂茸毛毛人妖 | 女人扒开屁股让男人捅 | 久久精品成人av | 九色国产在线 | 综合久久一区 | 欧美射射射 | 中文字幕不卡在线播放 | 中文字幕在线观看你懂的 | free国产hd露脸性开放 | 日韩中文视频 | 国产毛片一区二区 | 美女精品久久久 | 日本三级韩国三级三级a级按摩 | 日韩精品久久久久久免费 | 色综合狠狠爱 | 岛国伊人| 在线视频91 | 亚洲日本在线观看视频 | 天天爽夜夜 | 亚洲AV无码国产精品午夜字幕 | 五月天亚洲色图 | 美女被爆操网站 | 国产成人自拍视频在线观看 | 体感预报日剧 | 国产va在线观看 | 欧美视频第一页 | 草久久免费视频 | 亚洲一区二区免费电影 | 精精国产xxxx视频在线 | 精品国产一二三四区 | 高清一区二区三区四区五区 | 无码精品在线观看 | 国产经典三级在线 | 67194成人在线 | 久久影院午夜 | 岳睡了我中文字幕日本 | 成人午夜视频网站 | 精品国产一区二区三区无码 | 少妇被粗大猛进进出出s小说 | 国产精品区一区二区三 | 久久亚洲综合网 | 欧美性生活一区二区三区 | 葵司免费一区二区三区四区五区 | 日本黄色片. | 日韩成人av网站 | 男女那个视频 | jizz18欧美18| 97人妻精品一区二区三区免费 | 女人又爽又黄免费女仆 | www.五月天激情 | 国产永久毛片 | 国产喷水吹潮视频www | 天天操人人干 | xxxxxx黄色 | 老司机深夜影院 | 日韩欧美国产一区二区三区 | 久久精品免费电影 | 亚洲美女久久 | 日韩少妇一区二区 | 天天色天天干天天色 | 久久欧美精品 | 一区二区三区波多野结衣 | 国产精品情侣呻吟对白视频 | 97视频人人 | 午夜在线播放视频 | 秋霞午夜网| 米奇色| 免费a在线观看 | 香蕉视频免费在线 | 极品人妻videosss人妻 | 伊人伊人伊人伊人 | 伊人久久久久久久久久 | 九九热免费精品视频 | 日本不卡视频在线观看 | av动漫网站| 亚洲成av人片一区二区梦乃 | 久久亚洲私人国产精品va | 日韩精品久久一区 | eeuss一区| 少妇久久久久久被弄到高潮 |