柚子快報邀請碼778899分享:平臺數(shù)據(jù)分類與聚類實驗報告
參考書籍:《數(shù)據(jù)流挖掘與在線學習算法》? 李志杰
1.6.1 實驗目的
本書內容以及課程實驗主要涉及Java程序設計語言、數(shù)據(jù)挖掘工具Weka和數(shù)據(jù)流機器學習平臺MOA,因此,需要安裝、配置并熟悉實驗環(huán)境。Java、Weka和MOA都是開源小軟件,簡單易用,都可以在個人電腦的這些實驗環(huán)境下完成。
1.6.2 實驗環(huán)境
(1) 操作系統(tǒng):Windows 10
(2) Java:1.8.0_181-b13
(3) Weka:3.8.4
(4) MOA:release-2020.07.1
1.6.3 安裝平臺
(1) Java安裝與配置
最新標準版Java 可從Oracle官方網站https://www.oracle.com/免費下載,如下圖所示。
安裝JDK后,必須配置PATH環(huán)境變量和CLASSPATH環(huán)境變量才能使用,操作如下。
右擊“我的電腦”→屬性→高級系統(tǒng)設置→環(huán)境變量,如圖所示進行配置。
下圖中,JAVA_HOME配置為JDK安裝路徑:C:/Program Files/Java/jdk1.8.0-181。Java的PATH環(huán)境變量和CLASSPATH環(huán)境變量直接加在后面,每項用“?;”隔開。CLASSPATH最前面的“.”表示當前路徑。
配置完成后,點擊“開始”→Windows系統(tǒng)→命令提示符,輸入:javac。如無錯誤提示,則配置成功。
(2) Eclipse集成開發(fā)環(huán)境
Eclipse是常用的Java集成開發(fā)環(huán)境,可以從官網http://www.eclipse.org/downloads/免費下載。
(3) Weka安裝
安裝配置好Java后,可以從官網http://www.cs.waikato.ac.nz/~ml/weka/免費下載Weka。也可從本書官網“下載專區(qū)”目錄下獲得weka-3-8-4-azul-zulu-windows安裝文件。
安裝完成后,安裝路徑的data子目錄下自帶23個ARFF格式的示例數(shù)據(jù)集。
(4) MOA安裝
MOA基于Java和Weka環(huán)境,可從官方網站https://moa.cms.waikato.ac.nz/免費下載。也可從本書官網“下載專區(qū)”目錄下獲得MOA壓縮文件moa-release-2020.07.1-bin。
MOA壓縮包中包括moa.jar和sizeofag.jar等文件,無須安裝。解包后雙擊子目錄bin/moa.bat,即可啟動MOA。
1.6.4 平臺操作
(1) Weka圖形用戶界面
啟動Weka,單擊探索者Explorer按鈕,Weka?GUI如圖1.37所示。加載一個數(shù)據(jù)集weather.nominal.arff,標簽頁Preprocess(預處理)、Classify(分類)、Cluster(聚類)、Associate(關聯(lián)分析)、Select attributes(屬性選擇)、Visualize(可視化)等都變?yōu)榭梢允褂谩?/p>
(2) Eclipse環(huán)境下Weka?API操作
除了GUI外,Weka還定義了應用程序編程接口API,很容易“嵌入”到Eclipse用戶自己的Java項目中。
在Eclipse中新建一個名為Weka的項目,右擊Weka,點擊Properties,Java Build Path→Libraries→Add External JARs,選中Weka安裝目錄下的weka.jar,添加到庫中,如圖所示。
以加載weather.nominal.arff和weather.numeric.arff為例,示例代碼見程序清單1.1。
程序清單1.1?加載ARFF文件
package weka;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import weka.core.converters.ConverterUtils.DataSource;
import java.io.File;
public class LoadArffFile {
public static void main(String[] args) throws Exception {
Instances data1=DataSource.read("C:/Program Files/Weka-3-8-4/data/weather.nominal.arff");
System.out.println(data1);
ArffLoader loader=new ArffLoader();
loader.setSource(new File("C:/Program Files/Weka-3-8-4/data/weather.numeric.arff"));
Instances data2=loader.getDataSet();
System.out.println(data2);
}
}
(3) MOA圖形用戶界面
雙擊MOA子目錄bin下moa.bat文件,即可啟動MOA GUI。如圖所示,通過點擊Configure來設置某項任務。
(4) Eclipse環(huán)境下MOA?API操作
與Weka類似,除了GUI外,MOA還定義了應用程序編程接口API,很容易“嵌入”到Eclipse用戶自己的Java項目中。
在Eclipse中新建一個MOA的項目,右擊該項目,點擊Properties,Java Build Path→Libraries→Add External JARs,選中下載包中的moa.jar和sizeofag.jar等文件,添加到庫中,如圖所示。
B 實驗1報告-2 ?數(shù)據(jù)分類
2.5.1?實驗目的
(1) 理解有監(jiān)督數(shù)據(jù)分類原理與過程。
(2) 熟悉Weka分類操作。
(3) 熟悉MOA分類操作。
2.5.2?實驗環(huán)境
(1) 操作系統(tǒng):Windows 10
(2) Java:1.8.0_181-b13
(3) Weka:3.8.4
(4) MOA:release-2020.07.1
2.5.3 Weka分類
(1) 使用C4.5算法分類器
C4.5算法在Weka中實現(xiàn)為J48分類器,下面在Weka平臺中使用J48分類器訓練weather.nominal.arff數(shù)據(jù)集。
啟動Weka→Explorer→Open file→weather.nominal.arff→Classify→Choose→trees→J48→Start,訓練集構建J48分類器模型如上圖所示。
右擊圖2.10的Result list區(qū)域中新生成條目→Visualize tree,彈出下圖所示的決策樹視圖窗口。
(2) 使用分類器預測未知數(shù)據(jù)
構建圖2.12所示的測試數(shù)據(jù)集test.arff,使用圖2.11的決策樹進行預測。
圖2.10的Test options區(qū)域,點擊Supplied test set→Set→Open file→test.arff→Close→More options→Choose→PlainTest→OK→Start,則啟動評估過程后,會發(fā)現(xiàn)多了一項測試集的預測結果,如下圖所示。結果表明,測試集三個實例,其中兩個預測正確,一個預測錯誤。
(3) 構建J48批量分類器
本示例用Java代碼構建一個J48批量分類器,示例代碼見程序清單2.1。
程序清單2.1構建J48批量分類器
import weka.classifiers.trees.J48;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import java.io.File;
public class J48Classifier {
???public static void main(String[] args) throws Exception {
???ArffLoader loader=new ArffLoader();
???loader.setFile(new File("C:/Program Files/Weka-3-8-4/data/weather.nominal.arff"));
???Instances data=loader.getDataSet();
???data.setClassIndex(data.numAttributes()-1);
???
???String[] options=new String[1];
???options[0]="-U";
???J48 tree=new J48();
???tree.setOptions(options);
???tree.buildClassifier(data);
???
???System.out.println(tree);
???}
}
在Eclipse中運行代碼,輸出訓練好的決策樹模型,如下圖所示。
2.5.4 MOA分類
(1) 使用NaiveBayes分類器
①?LearnModel
???????啟動MOA→Classification→Configure→tasks.LearnModel。
???選擇:learner→bayes.NaiveBayes,stream→WaveformGenerator,maxInstances→1000000,taskResultFile→modelNB.moa。
???????????點擊Run,則NaiveBayes模型存儲到modelNB.moa中。
②?EvaluateModel
???????????點擊Configure→tasks.EvaluateModel。
???選擇:stream→WaveformGenerator→instanceRandomSeed→2,maxInstances→1000000,然而,model無法選擇到modelNB.moa,所有這里我們需要自己創(chuàng)建一個modelNB.moa。
???點擊“確定”返回到Configure→右擊命令行→Copy configuration to clipboard→Enter configuration→編輯配置-m file: modelNB.moa。任務命令行變?yōu)椋篍valuateModel -m file:modelNB.moa -s (generators.WaveformGenerator -i 2) -i 1000000。
??????點擊Run運行。由于輸出頻率為100000步,中間面板有10項文字輸出,結果如下圖所示。
③?EvaluatePeriodicHeldOutTest
???????????點擊Configure→tasks. EvaluatePeriodicHeldOutTest。
???選擇:learner→bayes.NaiveBayes,stream→WaveformGenerator,testSize→100000,trainSize→10000000,sampleFrequency→1000000。
???點擊Run運行。從下圖可看到,中間面板有10項文字輸出,底部面板顯示最終統(tǒng)計與可視化結果。最終的準確率是80.48%。
④?EvaluateInterleavedTestThenTrain
???點擊Configure→tasks. EvaluateInterleavedTestThenTrain。
???選擇:learner→bayes.NaiveBayes,stream→WaveformGenerator,instanceLimit→1000000,sampleFrequency→10000。
???點擊Run運行。從下圖可看到,中間面板有100項文字輸出,底部面板顯示最終統(tǒng)計與可視化結果。最終的準確率是80.47%。
⑤?EvaluatePrequential
???點擊Configure→tasks. EvaluatePrequential。
???選擇:learner→bayes.NaiveBayes,stream→WaveformGenerator,evaluator→WindowClassificationPerformanceEvaluator→width→1000,instanceLimit→1000000,sampleFrequency→10000。
???點擊Run運行。從下圖可看到,中間面板有100項文字輸出,底部面板顯示最終統(tǒng)計與跳躍的鋸齒形可視化結果。最終的準確率是80.30%。
(2) 使用Hoeffding樹分類器
①?使用EvaluateModel嵌套LearnModel評估Hoeffding樹
???????????點擊Configure→tasks.EvaluateModel。
???選擇:model→tasks.LearnModel→learner →trees. HoeffdingTree→stream→WaveformGenerator→maxInstances→1000000,stream→WaveformGenerator→instanceRandomSeed→2,maxInstances→1000000。
???點擊“確定”返回到Configure。任務命令行為:EvaluateModel -m (LearnModel -l trees.HoeffdingTree -s generators.WaveformGenerator -m 1000000) -s (generators.WaveformGenerator -i 2) -i 1000000 -f 10000。
??????點擊Run運行,結果如下圖所示。
②?EvaluatePeriodicHeldOutTest、EvaluateInterleavedTestThenTrain和EvaluatePrequential
與NaiveBayes類似,Hoeffding樹也可以分別使用數(shù)據(jù)流三種評估方式:EvaluatePeriodicHeldOutTest(在一個保留測試集上周期性截取性能快照)、EvaluateInterleavedTestThenTrain(交錯式測試-訓練評估法)和EvaluatePrequential(先序評估法)。評估Hoeffding樹具體操作與上面(1)中NaiveBayes的操作類似。
事實上,MOA GUI底部可同時顯示當前任務和之前任務的可視化結果,當前任務為紅色,之前任務為藍色。因此,比較NaiveBayes與Hoeffding樹分類器性能非常方便和直觀。
C 實驗1報告-3 ?數(shù)據(jù)聚類
3.9.1 實驗目的
(1) 理解無監(jiān)督數(shù)據(jù)聚類原理與過程。
(2) 熟悉Weka聚類操作。
(3) 熟悉MOA聚類操作。
3.9.2 實驗環(huán)境
(1) 操作系統(tǒng):Windows 10
(2) Java:1.8.0_181-b13
(3) Weka:3.8.4
(4) MOA:release-2020.07.1
3.9.3 Weka聚類
聚類屬于典型的的無監(jiān)督學習方式,聚類對象是沒有標簽的實例或數(shù)據(jù)點。聚類的任務是要根據(jù)實例間的相似性進行分組,之前這些分組是未知的。
(1) 使用K-Means算法聚類
K-Means算法又稱為K均值算法,是一種對數(shù)據(jù)集進行批量聚類的無監(jiān)督學習算法。它依靠數(shù)據(jù)點彼此之間的距離遠近對其進行分組,將一個給定的數(shù)據(jù)集分類為k個聚類。算法不斷進行迭代計算和調整,直到達到一個理想的結果。K-Means算法在Weka平臺實現(xiàn)為SimpleKMeans。
SimpleKMeans算法有兩個重要參數(shù),一個是distanceFunction,默認EuclideanDistance?;另一個是numClusters,默認值2。
下面以weather.numeric.arff數(shù)據(jù)集為例,使用SimpleKMeans算法聚類操作。聚類結果如圖3.15所示。
啟動Weka→Explorer→Open file→weather.numeric.arff→Cluster→Choose→SimpleKMeans→Ignore attributes→play→Select。
單擊Start,聚類過程開始。
(2) 使用DBSCAN和OPTICS算法
這里我們的waka里面是沒有這兩個算法的,需要自己導包進去
導包過程參考:向weka 中添加DBSCAN算法_weka dbscan-CSDN博客
DBSCAN是經典的密度批量聚類算法,其基本思想是鄰域內含有大量點的核心點構建聚類。算法以任意順序訪問數(shù)據(jù)點,如果該點為核心點,則該點與其所有可達的數(shù)據(jù)點形成新的聚類。非核心點則標為“離群值”,直到有一個新的核心點與“離群值”可達,“離群值”才加入該聚類。
DBSCAN密度方法可以聚類非球形形狀的數(shù)據(jù),這是K -均值聚類方法難以做到的。OPTICS算法則在層次聚類方面擴展了DBSCAN算法。
以鳶尾花數(shù)據(jù)集為例,使用Weka平臺的DBSCAN和OPTICS算法,操作和顯示結果如下。
啟動Weka→Explorer→Open file→iris.arff→Cluster→Choose→DBSCAN,選擇了DBSCAN聚類算法。
點擊Choose右邊DBSCAN的文本框→參數(shù)epsilion=0.2→參數(shù)minPoints=5→OK。
點擊Ignore attributes→class→Select。
單擊Start,DBSCAN聚類結果如下圖所示。
使用OPTICS對鳶尾花數(shù)據(jù)集聚類,操作過程類似于DBSCAN。
選擇OPTICS聚類算法后,設OPTICS參數(shù)epsilion=0.2、minPoints=5。
單擊Start運行,OPTICS可視化窗口自動彈出,窗口包括Table和Graph兩個標簽,分別以表格和圖形顯示聚類結果。
下圖的圖形標簽頁中,峰值中間夾著的兩個山谷,對應OPTICS找到的兩個簇。
柚子快報邀請碼778899分享:平臺數(shù)據(jù)分類與聚類實驗報告
好文閱讀
本文內容根據(jù)網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。