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

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

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

因而,今天看了一天的Weka。java

主要是看了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();
        }

    }

}
相關文章
相關標籤/搜索