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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

实战:关联规则挖掘

發布時間:2024/1/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战:关联规则挖掘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何使用 Apriori 工具包

Apriori 雖然是十大算法之一,不過在 sklearn 工具包中并沒有它,也沒有 FP-Growth 算法。。這里教你個方法,來選擇 Python 中可以使用的工具包,搜索工具包。

efficient-apriori 1.0.0找到這個工具包,然后在終端(windows 中叫anaconda prompt)

輸入:pip install efficient-apriori

然后重新進入jupyter 模式;

接下來我們用這個工具包,跑一下超市購物的例子

from efficient_apriori import apriori # 設置數據集 data = [('牛奶','面包','尿布'),('可樂','面包', '尿布', '啤酒'),('牛奶','尿布', '啤酒', '雞蛋'),('面包', '牛奶', '尿布', '啤酒'),('面包', '牛奶', '尿布', '可樂')] # 挖掘頻繁項集和頻繁規則 itemsets, rules = apriori(data, min_support=0.5, min_confidence=1) print(itemsets) print(rules)

其中 data 是我們要提供的數據集,它是一個 list 數組類型。min_support 參數為最小支持度,用小數表示(不要用百分數)

min_confidence 是最小置信度,用小數表示(不要用百分數)

實際上,data 是個 List 數組類型,其中每個值都可以是一個集合。實際上你也可以把 data 數組中的每個值設置為 List 數組類型,比如:

data = [['牛奶','面包','尿布'],['可樂','面包', '尿布', '啤酒'],['牛奶','尿布', '啤酒', '雞蛋'],['面包', '牛奶', '尿布', '啤酒'],['面包', '牛奶', '尿布', '可樂']]

efficient-apriori 工具包把每一條數據集里的項式都放到了一個集合中進行運算,并沒有考慮它們之間的先后順序。因為實際情況下,同一個購物籃中的物品也不需要考慮購買的先后順序。

而其他的 Apriori 算法可能會因為考慮了先后順序,出現計算頻繁項集結果不對的情況。所以,建議使用efficient-apriori工具包。

?

挖掘導演是如何選擇演員的

由于沒有公開的數據集可以使用,我們需要使用 Python 爬蟲進行數據采集。

同導演選擇演員的規則是不同的,因此我們需要先指定導演。數據源我們選用豆瓣電影。

我們先在豆瓣電影上輸入“寧浩”,然后:

頁面會呈現出來導演之前的所有電影,然后對頁面進行觀察,你能觀察到以下幾個現象:

1、頁面默認是 15 條數據反饋,第一頁會返回 16 條。其中第一條是導演簡要介紹,可以將其理解為廣告,接下來的內容才是我們要爬取的重點。

2、每條數據的最后一行是電影的演出人員的信息,第一個人員是導演,其余為演員姓名。姓名之間用“/”分割。

抓取程序的目的是為了生成寧浩導演(你也可以抓取其他導演)的數據集,結果會保存在 csv 文件中。完整的抓取代碼如下:

# -*- coding: utf-8 -*- # 下載某個導演的電影數據集 from efficient_apriori import apriori from lxml import etree import time from selenium import webdriver import csv driver = webdriver.Edge() # 設置想要下載的導演 數據集 director = u'寧浩' # 寫 CSV 文件 file_name = './' + director + '.csv' base_url = 'https://movie.douban.com/subject_search?search_text='+director+'&cat=1002&start=' out = open(file_name,'w', newline='', encoding='utf-8-sig') csv_write = csv.writer(out, dialect='excel') flags=[] # 下載指定頁面的數據 def download(request_url):driver.get(request_url)time.sleep(1)html = driver.find_element_by_xpath("//*").get_attribute("outerHTML")html = etree.HTML(html)# 設置電影名稱,導演演員 的 XPATHmovie_lists = html.xpath("/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='title']/a[@class='title-text']")name_lists = html.xpath("/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='meta abstract_2']")# 獲取返回的數據個數num = len(movie_lists)if num > 15: # 第一頁會有 16 條數據# 默認第一個不是,所以需要去掉movie_lists = movie_lists[1:]name_lists = name_lists[1:]for (movie, name_list) in zip(movie_lists, name_lists):# 會存在數據為空的情況if name_list.text is None: continue# 顯示下演員名稱print(name_list.text)names = name_list.text.split('/')# 判斷導演是否為指定的 directorif names[0].strip() == director and movie.text not in flags:# 將第一個字段設置為電影名稱names[0] = movie.textflags.append(movie.text)csv_write.writerow(names)print('OK') # 代表這頁數據下載成功print(num)if num >= 14: # 有可能一頁會有 14 個電影# 繼續下一頁return Trueelse:# 沒有下一頁return False# 開始的 ID 為 0,每頁增加 15 start = 0 while start<10000: # 最多抽取 1 萬部電影request_url = base_url + str(start)# 下載數據,并返回是否有下一頁flag = download(request_url)if flag:start = start + 15else:break out.close() print('finished')

csv文件結果如下:

提示:運行上述代碼,你已經打開的Edge會被重啟!(如果你沒用固然好,要是你用了,那么要對寫的文檔做好在線保存!否則會被強行中斷!!!)

有了數據之后,我們就可以用 Apriori 算法來挖掘頻繁項集和關聯規則,代碼如下

# -*- coding: utf-8 -*- from efficient_apriori import apriori import csv director = u'寧浩' file_name = './'+director+'.csv' lists = csv.reader(open(file_name, 'r', encoding='utf-8-sig')) # 數據加載 data = [] for names in lists:name_new = []for name in names:# 去掉演員數據中的空格name_new.append(name.strip())data.append(name_new[1:]) # 挖掘頻繁項集和關聯規則 itemsets, rules = apriori(data, min_support=0.5, min_confidence=1) print(itemsets) print(rules)

?

代碼中都設定了最小支持度和最小置信系數,這樣我們可以找到支持度大于 50%,置信系數為 1 的頻繁項集和關聯規則。

運行結果:

{1: {('徐崢',): 5, ('黃渤',): 6}, 2: {('徐崢', '黃渤'): 5}}
[{徐崢} -> {黃渤}]

你能看出來,寧浩導演喜歡用徐崢和黃渤,并且有徐崢的情況下,一般都會用黃渤。你也可以用上面的代碼來挖掘下其他導演選擇演員的規律。

?

總結

實戰最主要的是爬取數據,尤其是環境的搭建和最后編碼部分。

算法有現成的包efficient-apriori 美 ['e?pr?'?r?]可以使用

?Apriori 算法中的最小支持度和最小置信度,一般設置為多少比較合理?

首先,這兩個值與數據集大小特征相關。一般來說最小支持度常見的取值有0.5,0.1, 0.05。最小置信度常見的取值有1.0, 0.9, 0.8。可以通過嘗試一些取值,然后觀察關聯結果的方式來調整最小值尺度和最小置信度的取值。

?

參考文獻:

chome瀏覽器驅動與對應版本https://blog.csdn.net/cz9025/article/details/70160273

chome瀏覽器漢化下載地址:https://www.wlrjy.com/Soft/156406.html

selenium模擬瀏覽器+chrome+windows:https://blog.csdn.net/qq_38788128/article/details/80525695

是由于瀏覽器驅動與瀏覽器版本不一致造成的!(值得一提的是chrome沒有找到官方win64的webdriver,所以chome在w64上用不了)

建議:如果你是linux,mac操作系統,那么按照上面的參考文獻,就可以完美完成安裝。如果你是window電腦,建議使用自帶的Edge瀏覽器,然后你可以在這個官網下載webdriver(注意與Edge版本匹配)。最后,將下載的webdriver文件復制到python安裝目錄下(Anaconda放在Anaconda的安裝目錄下!!!)

selenium初探:WebDriverException解決方法探索(以Chrome瀏覽器|IE瀏覽器|Edge瀏覽器為例)

?

?

?

?

總結

以上是生活随笔為你收集整理的实战:关联规则挖掘的全部內容,希望文章能夠幫你解決所遇到的問題。

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