1. 程式人生 > >weka實際操作--構建分類、迴歸模型(比較詳細)

weka實際操作--構建分類、迴歸模型(比較詳細)

轉載已授權,原始連結:http://blog.csdn.net/qq_38663729/article/details/77253165

weka提供了幾種處理資料的方式,其中分類和迴歸是平時用到最多的,也是非常容易理解的,分類就是在已有的資料基礎上學習出一個分類函式或者構造出一個分類模型。這個函式或模型能夠把資料集中地對映到某個給定的類別上,從而進行資料的預測。就是通過一系列的演算法,將看起來本來分散的資料,給劃分成一個個不同的類,我們可以知道某個資料為什麼要劃分到這個類別,後來的資料通過這個過程就可以知道把它劃分到哪個類別,從而進行了資料的預測。

要進行分類,我們根據什麼分類,這就需要把資料分為訓練集和測試集兩個部分,先分析訓練集的資料的特點構建出分類模型。然後利用構建好的分類模型對測試集的資料進行分類,評估分類的準確性,從而進行分類器的選擇。

常用的分類器也是最好容易理解的就是決策樹,決策樹的結構非常好理解,構建出來的決策樹,使用者也容易根據資料人工進行分類處理。決策樹分類演算法是將資料進行分類,生成一棵二叉或者多叉的樹狀結構。有一個根節點,沒有入邊(度),可能有多條出邊,在樹的內部的節點只有一個入邊,沒有出邊的節點稱為葉子節點,從根節點到葉子節點的一條路徑是一條分類規則,一棵決策樹有多條分類規則。


開啟weka,選擇Explorer

點選進去之後,在第一個選項卡下(Preprocess),選擇Open file選擇要開啟的檔案,注意:weka識別的檔案只是arff字尾的檔案,

arff格式檔案主要由兩個部分構成,頭部定義和資料區。這種格式的檔案以%開頭的是註釋,@attribute開頭說明是屬性,後面是屬性名,屬性取值或者屬性值的型別,@data後的是資料集,以行為單位,一行代表一條資料,以逗號隔開每個屬性值,注意用合適的軟體開啟,用記事本開啟的時候,檔案中的換行符號不識別,格式很難看,建議用EditPlus。

在weka的安裝檔案中有一個data資料夾,裡面是weka自帶的一些測試資料,我們可以利用他們進行練習,開啟weather.nominal.arff檔案,可以看到一些基本的資訊,也可以利用Save按鈕將csv格式的檔案儲存成arff格式的

,在這之前先將資料進行一下處理,利用提供的資料改成測試資料,從而對資料進行預測。把檔案中的play屬性值都變成?佔位符,否則是無法識別的。選擇第二個選項卡Classify分類

單擊choose,在trees目錄下選擇J48,這是決策樹的一個構建類,後期可以通過java呼叫完成這個操作,Test options中有四個單選按鈕,選擇第二個,單擊右面的set按鈕,設定測試資料集,Open file開啟之前修改的測試資料集,單擊Start,開始執行,右下角的那隻鳥如果來回走動表示正在執行,可以看到右面的文字框輸出資訊

  1. === Run information ===  
  2. Scheme:       weka.classifiers.trees.J48 -C 0.25 -M 2  
  3. Relation:     weather.symbolic  
  4. Instances:    14  
  5. Attributes:   5  
  6.               outlook  
  7.               temperature  
  8.               humidity  
  9.               windy  
  10.               play  
  11. Test mode:    user supplied test set:  size unknown (reading incrementally)  
  12. === Classifier model (full training set) ===  
  13. J48 pruned tree  
  14. ------------------  
  15. outlook = sunny  
  16. |   humidity = high: no (3.0)  
  17. |   humidity = normal: yes (2.0)  
  18. outlook = overcast: yes (4.0)  
  19. outlook = rainy  
  20. |   windy = TRUE: no (2.0)  
  21. |   windy = FALSE: yes (3.0)  
  22. Number of Leaves  :     5  
  23. Size of the tree :  8  
  24. Time taken to build model: 0 seconds  
  25. === Evaluation on test set ===  
  26. Time taken to test model on supplied test set: 0 seconds  
  27. === Summary ===  
  28. Total Number of Instances                0       
  29. Ignored Class Unknown Instances                 14       
  30. === Detailed Accuracy By Class ===  
  31.                  TP Rate  FP Rate  Precision  Recall   F-Measure  MCC      ROC Area  PRC Area  Class  
  32.                  0.000    0.000    0.000      0.000    0.000      0.000    ?         ?         yes  
  33.                  0.000    0.000    0.000      0.000    0.000      0.000    ?         ?         no  
  34. Weighted Avg.    NaN      NaN      NaN        NaN      NaN        NaN      NaN       NaN         
  35. === Confusion Matrix ===  
  36.  a b   <-- classified as  
  37.  0 0 | a = yes  
  38.  0 0 | b = no  

主要的我們看到輸出了決策樹的結構,我們可以根據輸出的資訊自己畫出樹的結構,也可以通過軟體檢視樹的結構,在文字中在同一縮排距離的資訊代表同一層的條件,

右鍵點選Result list中的選項,並選擇visualize tree檢視決策樹的圖形化結構,後期使用者可以根據這個人工進行決策


右鍵點選Result list中的選項,並選擇visualize classifier errors。

在出現的視窗中點選Sava按鈕,儲存輸出的檔案,之後我們開啟輸出的檔案檢視輸出的結果,系統在檔案中插入了兩列資料,其中一列就是預測的值

通過對比結果,正確率100%


用weka建立一個簡單的迴歸模型:


準備了一組資料,是所在城市一個商圈附近的二手房價(從二手房網站上抓到),houseSize房屋面積,bedrooms臥室數量,livingrooms客廳數量,restrooms衛生間數量,hardcover是否是精裝修(0否,1是)


單擊 Classify 選項卡,單擊 Choose 按鈕,然後擴充套件 functions 分支,選擇 LinearRegression 。在同一個分支還有另外一個選項,稱為 SimpleLinearRegression 簡單迴歸,簡單迴歸只有一個變數,我們有多個變數,所以使用LinearRegression,和上面的一樣,單擊Start,構建模型,得到一個輸出文字


資料中的每個屬性都對最後的結果有著很大或者很小的的影響,我們無法確定。

有三個選擇是:Supplied test set 允許提供一個不同的資料集來構建模型; Cross-validation 讓 WEKA 基於所提供的資料的子集構建一個模型,然後求出它們的平均值來建立最終的模型;Percentage split WEKA 取所提供資料的百分之一來構建一個最終的模型。這些不同的選擇對於不同的模型非常有用。對於迴歸,我們可以選擇 Use training set。這會告訴weka為了構建我們想要的模型,可以使用我們在 ARFF 檔案中提供的那些資料。

我們通過weka構建了一個房屋價格的模型,通過這個沃恩可以分析得到,房屋價格主要與房子面積和臥室數量有關,至於客廳數量和衛生間數量,因為大多數房子只有一個客廳和衛生間,進而對總面積影響小。對於是否是精裝修,分析可能原因是,房子都處於商圈附近,房子的精裝修並不能帶動整體的房價。

  1. sellingPrice =  
  2.       1.9285 * houseSize +  
  3.     -30.4737 * bedrooms +  
  4.     -20.2685  

我們可以通過以上得到的模型大致預測出其他房屋的價格,但是,房屋價格受各個方面影響太多,只能是估計,可能和實際相差巨大。


如有不對,歡迎指正!

參考: 《資料探勘與機器學習 WEKA應用技術與實踐》--袁梅宇 https://www.ibm.com/developerworks/cn/opensource/os-weka1/