weka實際操作--構建分類、回歸模型


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,開始運行,右下角的那只鳥如果來回走動表示正在執行,可以看到右面的文本框輸出信息

=== Run information ===

Scheme:       weka.classifiers.trees.J48 -C 0.25 -M 2
Relation:     weather.symbolic
Instances:    14
Attributes:   5
              outlook
              temperature
              humidity
              windy
              play
Test mode:    user supplied test set:  size unknown (reading incrementally)

=== Classifier model (full training set) ===

J48 pruned tree
------------------

outlook = sunny
|   humidity = high: no (3.0)
|   humidity = normal: yes (2.0)
outlook = overcast: yes (4.0)
outlook = rainy
|   windy = TRUE: no (2.0)
|   windy = FALSE: yes (3.0)

Number of Leaves  : 	5

Size of the tree : 	8


Time taken to build model: 0 seconds

=== Evaluation on test set ===

Time taken to test model on supplied test set: 0 seconds

=== Summary ===

Total Number of Instances                0     
Ignored Class Unknown Instances                 14     

=== Detailed Accuracy By Class ===

                 TP Rate  FP Rate  Precision  Recall   F-Measure  MCC      ROC Area  PRC Area  Class
                 0.000    0.000    0.000      0.000    0.000      0.000    ?         ?         yes
                 0.000    0.000    0.000      0.000    0.000      0.000    ?         ?         no
Weighted Avg.    NaN      NaN      NaN        NaN      NaN        NaN      NaN       NaN       

=== Confusion Matrix ===

 a b   <-- classified as
 0 0 | a = yes
 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構建了一個房屋價格的模型,通過這個沃恩可以分析得到,房屋價格主要與房子面積和卧室數量有關,至於客廳數量和衛生間數量,因為大多數房子只有一個客廳和衛生間,進而對總面積影響小。對於是否是精裝修,分析可能原因是,房子都處於商圈附近,房子的精裝修並不能帶動整體的房價。

sellingPrice =

      1.9285 * houseSize +
    -30.4737 * bedrooms +
    -20.2685

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


如有不對,歡迎指正!

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


免責聲明!

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



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