WEKA,一個開源java的數據挖掘工具


開始研究WEKA,一個開源java的數據挖掘工具。

HS沉寂這么多天,誰知道偏偏在我申請離職的時候給我安排了個任務,哎,無語。

於是,今天看了一天的Weka。

主要是看了HS提供的三個文章(E文,在google的幫助下看完的):

 

 
還有一個中文文檔:  http://www.doc88.com/p-881687347690.html
 
還有一個E文的PPT( http://www.cs.ccsu.edu/~markov/weka-tutorial.pdf),還沒仔細看。里面有個數據挖掘經常用到的軟件的列表。
 
簡單學會了Weka的用法。
weka就是一個工具,他根據用戶輸入的N組數據,通過用戶指定的算法,如:回歸分析、分類分析、聚類分析、鄰近分析等,然后輸出一個統計分析的結果。還可以使用測試數據對統計結果進行驗證,以確認分析結果的可用性。
weka本身有一個GUI,通過java -jar weka.jar啟動。然后點擊Explorer啟動子程序(我只學了Explorer)。
在weka explorer中點擊OpenFile打開*.arff格式的數據。arff其實就是文本文件。
 
weka explorer頂部標簽的第二個標簽,可以進行分類相關的分析,如回歸分析、分類分析、臨近分析等。
利用第三個標簽為集群相關的分析可以進行聚類分析等。
算法是在標簽的Classifier中的Choose按鈕中選擇的,其中,
以樹的形式展示分類分析是用:Classify->Choose->Classifiers->trees->J48; 對應java類(weka.classifiers.trees.J48;)
回歸分析是:Classify->Choose->Classifiers->Functions->LinearRegression 剛剛注意到界面上有這個類(weka.classifiers.functions.LinearRegression),也許就是用java編程時要用到的。
聚類分析是:Cluster->Choose->clusterers->SimpleKMeans
鄰近分析是:Classify->Choose->Classifiers->lazy->IBK
 
WEKA Explorer的使用,在文檔( http://www.doc88.com/p-881687347690.html)中的WEKA Explorer一節中有很詳細的介紹。請參考之。
 
通過Java可以很簡單的進行API的調用:如下代碼從一個arff文件中讀取數據,然后進行了回歸分析,然后打印了根據回歸分析結果預測的某個房屋的價格:
import java.io.FileNotFoundException;
import java.io.IOException;

import weka.classifiers.functions.LinearRegression;
import weka.core.Instances;

public class Weka {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String inputFile = "C:\\Documents and Settings\\Administrator\\My Documents\\Downloads\\weka-3-7-5\\weka-3-7-5\\my\\house.arff";
        java.io.Reader r;
        try {
            r = new java.io.BufferedReader(new java.io.FileReader(inputFile));
            Instances instances = new Instances(r);
            instances.setClassIndex(instances.numAttributes() - 1);
            LinearRegression linearRegression = new LinearRegression();
            linearRegression.buildClassifier(instances);
            double[] coef = linearRegression.coefficients();
            double myHouseValue = (coef[0] * 3198) + (coef[1] * 9669)
                    + (coef[2] * 5) + (coef[3] * 3) + (coef[4] * 1) + coef[6];
            System.out.println(myHouseValue);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM