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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据挖掘 —— 无监督学习(关联)

發(fā)布時(shí)間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据挖掘 —— 无监督学习(关联) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)挖掘 —— 無(wú)監(jiān)督學(xué)習(xí)(關(guān)聯(lián))

  • Apriori算法
    • 代碼
    • 結(jié)果

Apriori算法

代碼

from itertools import combinations def comb(lst):ret=[]for i in range(1,len(lst)+1):ret+=list(combinations(lst,i))return ret class AprLayer(object):d=dict()def __init__(self):self.d=dict() class AprNode(object):def __init__(self,node):self.s=set(node)self.size=len(self.s)self.lnk_nodes=dict()self.num=0def __hash__(self):return hash("__".join(sorted([str(itm) for itm in list(self.s)])))def __eq__(self, other):if "__".join(sorted([str(itm) for itm in list(self.s)]))=="__".join(sorted([str(itm) for itm in list(other.s)])):return Truereturn Falsedef isSubnode(self,node):return self.s.issubset(node.s)def incNum(self,num=1):self.num+=numdef addLnk(self,node):self.lnk_nodes[node]=node.sclass AprBlk():def __init__(self,data):cnt=0self.apr_layers = dict()self.data_num=len(data)for datum in data:cnt+=1datum=comb(datum)nodes=[AprNode(da) for da in datum]for node in nodes:if not node.size in self.apr_layers:self.apr_layers[node.size]=AprLayer()if not node in self.apr_layers[node.size].d:self.apr_layers[node.size].d[node]=nodeself.apr_layers[node.size].d[node].incNum()for node in nodes:if node.size==1:continuefor sn in node.s:sub_n=AprNode(node.s-set([sn]))self.apr_layers[node.size-1].d[sub_n].addLnk(node)def getFreqItems(self,thd=1,hd=1):freq_items=[]for layer in self.apr_layers:for node in self.apr_layers[layer].d:if self.apr_layers[layer].d[node].num<thd:continuefreq_items.append((self.apr_layers[layer].d[node].s,self.apr_layers[layer].d[node].num))freq_items.sort(key=lambda x:x[1],reverse = True)return freq_items[:hd]def getConf(self,low=True, h_thd=10, l_thd=1, hd=1):confidence = []for layer in self.apr_layers:for node in self.apr_layers[layer].d:if self.apr_layers[layer].d[node].num < h_thd:continuefor lnk_node in node.lnk_nodes:if lnk_node.num < l_thd:continueconf = float(lnk_node.num) / float(node.num)confidence.append([node.s, node.num, lnk_node.s, lnk_node.num, conf])confidence.sort(key=lambda x: x[4])if low:return confidence[:hd]else:return confidence[-hd::-1]class AssctAnaClass():def fit(self,data):self.apr_blk=AprBlk(data)return selfdef get_freq(self,thd=1,hd=1):return self.apr_blk.getFreqItems(thd=thd,hd=hd)def get_conf_high(self,thd,h_thd=10):return self.apr_blk.getConf(low=False, h_thd=h_thd, l_thd=thd)def get_conf_low(self,thd,hd,l_thd=1):return self.apr_blk.getConf(h_thd=thd,l_thd=l_thd,hd=hd)def main():data=[["牛奶","啤酒","尿布"],["牛奶","啤酒","咖啡","尿布"],["香腸","牛奶","餅干"],["尿布","果汁","啤酒"],["釘子","啤酒"],["尿布","毛巾","香腸"],["啤酒","毛巾","尿布","餅干"]]print("Freq",AssctAnaClass().fit(data).get_freq(thd=3,hd=10))print("Conf",AssctAnaClass().fit(data).get_conf_high(thd=3,h_thd=3)) if __name__=="__main__":main()

結(jié)果

Freq [({'啤酒'}, 5), ({'尿布'}, 5), ({'啤酒', '尿布'}, 4), ({'牛奶'}, 3)] Conf [[{'尿布'}, 5, {'啤酒', '尿布'}, 4, 0.8], [{'啤酒'}, 5, {'啤酒', '尿布'}, 4, 0.8]]

by CyrusMay 2022 04 05

總結(jié)

以上是生活随笔為你收集整理的数据挖掘 —— 无监督学习(关联)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。