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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

利用weka进行数据挖掘——基于Apriori算法的关联规则挖掘实例

發(fā)布時(shí)間:2024/3/24 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用weka进行数据挖掘——基于Apriori算法的关联规则挖掘实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1. weka安裝
    • 2. 先分析一個(gè)Apriori算法的關(guān)聯(lián)規(guī)則挖掘?qū)嵗?/li>
    • 3. 利用weka進(jìn)行數(shù)據(jù)挖掘
      • 3.1 將數(shù)據(jù)轉(zhuǎn)為ARFF格式
      • 3.2 利用weka進(jìn)行分析
    • 4. 參考文章

首先,如果不熟悉weka的使用的話,可以從我的git倉庫里面拉取一下weka的相關(guān)教程,倉庫里面還有包含此次實(shí)例的所有資源

1. weka安裝

我們可以在weka的官網(wǎng)上下載weka軟件:weka官網(wǎng)

如果下載速度慢的話也可以直接從我的git倉庫里面拉取這個(gè)軟件,軟件是win64位的weka-3-8-6

然后找到對應(yīng)版本:

點(diǎn)擊就可以開始下載了,一路安裝就好了,因?yàn)閣eka是基于Java開發(fā),所以如果你的電腦沒有Java環(huán)境的話,可能在安裝的過程中會(huì)提示你安裝Java,選擇安裝即可。這里我們需要記住一下我們安裝的路徑,因?yàn)槲覀兒竺孢€需要進(jìn)入到安裝目錄中來

2. 先分析一個(gè)Apriori算法的關(guān)聯(lián)規(guī)則挖掘?qū)嵗?/h2>

先打開這個(gè)文檔,這個(gè)文檔里面有一個(gè)基于Apriori算法的關(guān)聯(lián)規(guī)則挖掘?qū)嵗?/p>

可以先看一遍,看能不能用筆自己算出來,計(jì)算的步驟可以看下筆者的上一篇文章:數(shù)據(jù)挖掘十大算法之Apriori算法

只有理解了Apriori算法,才能夠自己編寫代碼進(jìn)行實(shí)踐,weka只是工具,幫助我們快速分析的工具,在分析之前我們需要先知道分析的步驟

這里我們需要對下表中數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘,尋找這些疾病之間的關(guān)系:

病人記錄號(hào)疾病名稱
1心力衰竭、其他疾病
2心力衰竭
3心力衰竭、尿毒癥
4心力衰竭、腎功能衰竭、糖尿病、尿毒癥
5心力衰竭、腎功能衰竭、糖尿病、尿毒癥
6糖尿病
7糖尿病、心力衰竭、其他疾病
8糖尿病、尿毒癥
9糖尿病
10糖尿病、腎功能衰竭、尿毒癥
11糖尿病
12心力衰竭、腎功能衰竭、糖尿病、尿毒癥
13心力衰竭、腎功能衰竭、糖尿病、尿毒癥
14腎功能衰竭
15腎功能衰竭、其他疾病
16腎功能衰竭、糖尿病
17腎功能衰竭、尿毒癥
18腎功能衰竭
19尿毒癥、糖尿病、腎功能衰竭
20尿毒癥、腎功能衰竭
21尿毒癥
22心力衰竭、腎功能衰竭、糖尿病、尿毒癥
23心力衰竭、腎功能衰竭、糖尿病、尿毒癥
24心力衰竭、腎功能衰竭、糖尿病、尿毒癥
25心力衰竭、腎功能衰竭、糖尿病、尿毒癥

我們先回顧一下進(jìn)行關(guān)聯(lián)分析的步驟:

  • Step1:令K = 1 ,計(jì)算單個(gè)項(xiàng)目的支持度,并篩選出頻繁1項(xiàng)集(大于最小支持度 )

  • Step2:(從K=2開始)根據(jù)K-1項(xiàng)的頻繁項(xiàng)目集生成候選K項(xiàng)目集,并進(jìn)行預(yù)剪枝

  • Step3:由候選K項(xiàng)目集生成頻繁K項(xiàng)集(篩選出滿足最小支持度的k項(xiàng)集)

  • 重復(fù)步驟2和3,直到無法篩選出滿足最小支持度的集合。(第一階段結(jié)束)

  • Step4:將獲得的最終的頻繁K項(xiàng)集,依次取出。同時(shí)計(jì)算該次取出的這個(gè)K項(xiàng)集 的所有真子集,然后以排列組合的方式形成關(guān)聯(lián)規(guī)則,并計(jì)算規(guī)則的置信度以及提升度,將符合要求的關(guān)聯(lián)規(guī)則生成提出。(算法結(jié)束)

我們可以從上表中知道這些病在事物中出現(xiàn)的次數(shù)為:

心力衰竭尿毒癥腎功能衰竭糖尿病其他疾病
121516163

我們先生成候選1項(xiàng)集,并計(jì)算其支持度,支持度(sup(x)) = 某個(gè)項(xiàng)集X在事物集中出現(xiàn)的次數(shù) / 事物集中記錄的總個(gè)數(shù)

項(xiàng)集支持度
心力衰竭12/25 = 0.48
尿毒癥15/25 = 0.6
腎功能衰竭16 / 25 = 0.64
糖尿病16 / 25 = 0.64
其他疾病3 / 25 = 0.12

這里我們規(guī)定最小支持度(Support) = 40%,并篩選出頻繁一項(xiàng)集(將不滿足min_support的項(xiàng)集去除掉)

項(xiàng)集支持度
心力衰竭12/25 = 0.48
尿毒癥15/25 = 0.6
腎功能衰竭16 / 25 = 0.64
糖尿病16 / 25 = 0.64

現(xiàn)在我們有篩選出的頻繁一項(xiàng)集經(jīng)過排列組合生成候選二項(xiàng)集,共有C42 = 6個(gè)候選二項(xiàng)集

同樣我們可以算出每個(gè)項(xiàng)集的支持度(過程與上面一樣,這里不再贅述):

項(xiàng)集支持度
心力衰竭、糖尿病36%
心力衰竭、尿毒癥36%
心力衰竭、腎功能衰竭32%
糖尿病、尿毒癥44%
糖尿病、腎功能衰竭44%
尿毒癥、腎功能衰竭48%

篩選出頻繁二項(xiàng)集

項(xiàng)集支持度
糖尿病、尿毒癥44%
糖尿病、腎功能衰竭44%
尿毒癥、腎功能衰竭48%

當(dāng)然可以先進(jìn)行預(yù)剪枝,但是這里預(yù)剪枝排除不了候選項(xiàng)集。同理我們可以求出頻繁三項(xiàng)集

項(xiàng)集支持度
糖尿病、尿毒癥、腎功能衰竭40%

最后一步我們需要求出不同項(xiàng)集之間的支持度(Support)和置信度(Confidence):

  • 🚩(支持度)Support=(AUB)count/n 即A和B同時(shí)出現(xiàn)的次數(shù)之和與事務(wù)數(shù)n之比。

  • 🚩(置信度)Confidence=(AUB)count/Acount 即A和B同時(shí)出現(xiàn)的次數(shù)之和與A出現(xiàn)次數(shù)之比。

我們可以計(jì)算出:

  • 糖尿病→尿毒癥 Confidence=11/16=68.7%
  • 糖尿病→腎功能衰竭 Confidence=11/16=68.7%
  • 糖尿病→(尿毒癥∩腎功能衰竭) Confidence=10/16=62.5%
  • (尿毒癥∩糖尿病)→腎功能衰竭 Confidence=10/11=90%

為方便起見,將糖尿病標(biāo)記為T,尿毒癥標(biāo)記為N,腎功能衰竭標(biāo)記為S。總結(jié)出部分關(guān)聯(lián)規(guī)則。

關(guān)聯(lián)規(guī)則支持度置信度
T→N44%68.7%
T→S44%68.7%
T→(N∩S)40%62.5%
(T∩N)→S40%90.00%

根據(jù)以上關(guān)聯(lián)規(guī)則可得出一下結(jié)論:

(1)糖尿病、尿毒癥、腎功能衰竭三種疾病之間有一定的關(guān)聯(lián)關(guān)系。

(2)對于同時(shí)患有糖尿病和尿毒癥的44%的疾病人群而言,有68.7%的糖尿病患者會(huì)并發(fā)尿毒癥。

(3)對于同時(shí)患有糖尿病和腎功能衰竭的44%的疾病人群而言,有68.7%的糖尿病患者會(huì)并發(fā)腎功能衰竭。

(4)有40%的患者同時(shí)患有糖尿病、尿毒癥、腎功能衰竭,其中有62.5%的糖尿病患者會(huì)并發(fā)尿毒癥和腎功能衰竭,有90%的糖尿病和尿毒癥患者會(huì)并發(fā)腎功能衰竭。

3. 利用weka進(jìn)行數(shù)據(jù)挖掘

如果數(shù)據(jù)量很大,例如數(shù)據(jù)庫里有幾十萬條數(shù)據(jù),那我們手算肯定是不行的,所以我們就需要借助weka這款軟件來幫助我的進(jìn)行數(shù)據(jù)分析和挖掘。weka的詳細(xì)用法在上面已經(jīng)給了下載的鏈接,可以看一下,接下來我們開始實(shí)戰(zhàn)

首先我們要知道:WEKA存儲(chǔ)數(shù)據(jù)的格式是ARFF(Attribute-Relation File Format)文件,這是一種ASCII文本文件

我們可以在weka安裝目錄的data目錄下找到一些默認(rèn)的ARFF格式的文件

使用WEKA作數(shù)據(jù)挖掘,面臨的第一個(gè)問題往往是我們的數(shù)據(jù)不是ARFF格式的。

幸好,WEKA還提供了對CSV文件的支持,而這種格式是被很多其他軟件所支持的。此外,WEKA還提供了通過JDBC訪問數(shù)據(jù)庫的功能。

3.1 將數(shù)據(jù)轉(zhuǎn)為ARFF格式

首先我先以Excel為例,說明如何獲得CSV文件。然后我們將知道CSV文件如何轉(zhuǎn)化成ARFF文件,畢竟后者才是WEKA支持得最好的文件格式。面對一個(gè)ARFF文件,我們?nèi)杂幸恍╊A(yù)處理要做,才能進(jìn)行挖掘任務(wù)。

Excel的XLS文件可以讓多個(gè)二維表格放到不同的工作表(Sheet)中,我們只能把每個(gè)工作表存成不同的CSV文件。打開一個(gè)XLS文件并切換到需要轉(zhuǎn)換的工作表,另存為CSV類型,點(diǎn)“確定”、“是”忽略提示即可完成操作。

ARFF是表示屬性關(guān)系文件格式的首字母縮略詞。它是使用標(biāo)題的CSV文件格式的擴(kuò)展,提供有關(guān)列中數(shù)據(jù)類型的元數(shù)據(jù)。

我們以上面我們手算過的關(guān)聯(lián)案例來演示,首先我們需要把數(shù)據(jù)整理到Excel表中,后期我們可以通過Java編寫程序來自動(dòng)化完成這些步驟。這里我們將患病標(biāo)記為yes,不患病標(biāo)記為no,得到整理好的Excel表,此表也可以從我提供的git倉庫中拉取到

我們再填Excel表的時(shí)候要注意的是:

  • 不要包含中文
  • 不要用數(shù)字做標(biāo)識(shí),要用yes/no做標(biāo)識(shí)

當(dāng)然還有很多值得注意的點(diǎn),請看參考文章的第一篇

填好的Excel長這樣,這里我用行數(shù)代替患者編號(hào)了,因?yàn)榫幪?hào)沒有什么意義

我們將此表另存為,保存格式選擇CSV格式,不用管提示,一路確認(rèn)就好

打開我們的CSV格式的文件,長這樣

現(xiàn)在我們需要進(jìn)一步轉(zhuǎn)換格式:.csv -> .arff
這里有兩種方式,將CSV轉(zhuǎn)換為ARFF最迅捷的辦法是使用WEKA所帶的命令行工具。

  • 運(yùn)行WEKA的主程序,出現(xiàn)GUI后可以點(diǎn)擊下方按鈕進(jìn)入相應(yīng)的模塊。我們點(diǎn)擊進(jìn)入“Simple CLI”模塊提供的命令行功能。在新窗口的最下方(上方是不能寫字的)輸入框?qū)懮?/li>
java weka.core.converters.CSVLoader 文件路徑加上文件名.csv > 文件路徑加上文件名.arff
  • 在WEKA 3.5中提供了一個(gè)“Arff Viewer”模塊,我們可以用它打開一個(gè)CSV文件將進(jìn)行瀏覽,然后另存為ARFF文件。
    進(jìn)入“Exploer”模塊,從上方的按鈕中打開CSV文件然后另存為ARFF文件亦可

我這里采取命令行的形式,程序員嗎,肯定還是喜歡用命令行一點(diǎn)

要轉(zhuǎn)換的文件要帶上地址,輸出的文件也要帶上,例如我的命令是:

java weka.core.converters.CSVLoader C:\Users\hw\Desktop\demo1001.csv > C:\Users\hw\Desktop\demo1001.arff

查看一下我們轉(zhuǎn)換好的reff格式的文件,長這樣:

3.2 利用weka進(jìn)行分析

接下來我們就利用weka對這些數(shù)據(jù)進(jìn)行分析,來查找這些數(shù)據(jù)之間的關(guān)系

那些面板的具體含義看一下我倉庫里面WEKA中文詳細(xì)教程ppt,寫的很清楚

這里直接上手

當(dāng)然weka的功能非常強(qiáng)大,我們這里僅僅這是做一個(gè)演示,來加深我們對Aprior算法的理解

上面提供的git倉庫里面也有weka的API和一個(gè)demo,讀者可以編寫代碼來對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行挖掘

4. 參考文章

  • weka的基本使用
  • 如何在Weka中加載CSV機(jī)器學(xué)習(xí)數(shù)據(jù)
  • 【數(shù)據(jù)挖掘 data mining】 Weka在數(shù)據(jù)挖掘中的運(yùn)用(雙語字幕)
  • 各大大學(xué)的數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)教學(xué)課件

總結(jié)

以上是生活随笔為你收集整理的利用weka进行数据挖掘——基于Apriori算法的关联规则挖掘实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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