2013-04-25 143 views
6

我試圖使用Weka的NaiveBayesUpdateable分類器。我的數據包含名義和數字屬性:Java,Weka:如何預測數字屬性?

@relation cars 
    @attribute country {FR, UK, ...} 
    @attribute city {London, Paris, ...} 
    @attribute car_make {Toyota, BMW, ...} 
    @attribute price numeric %% car price 
    @attribute sales numeric %% number of cars sold 

我需要根據其他屬性預測銷售數量(數字!)。

我明白我不能在Weka中使用貝葉斯分類的數值屬性。一種技術是將數值屬性的值拆分爲長度爲k的N個區間,並使用名義屬性(其中n是一個類名稱),如下所示:@attribute class {1,2,3,... N}。

我需要預測的數值屬性的範圍是從0到1 000 000.創建1 000 000個類別根本沒有意義。如何使用Weka預測數字屬性,或者在Weka沒有用於此任務的工具的情況下查找哪些算法?

+0

可能重複的[Java,Weka:NaiveBayesUpdateable:無法處理數字類](http://stackoverflow.com/questions/15956537/java-weka-naivebayesupdateable-cannot-handle-numeric-class)。雖然它可能是相反的,因爲這是一個更好的問題。 – demongolem 2016-12-11 03:05:07

回答

10

你想要做的是迴歸,而不是分類。所不同的是正是你描述一下/想:

  • 分類具有離散類/標籤,任何名義屬性,可以使用如下類
  • 迴歸具有連續的標籤,類將是一個錯誤術語這裏。

大多數基於迴歸的技術可以通過定義一個閾值轉換成二進制分類,並且該類別由預測值高於還是低於該閾值來確定。

我不知道所有的WEKA的分類,提供迴歸的,但你可以通過查看這兩個啓動:

您可能必須使用NominalToBinary過濾器將您的名義屬性轉換爲數字(二進制​​)屬性。

0

這些天,我相信在Weka 3.7中首次引入,RandomForest會按照您的需要工作。這些特徵可以是名義和數字的混合,預測也可以是數字。

缺點(我想你的情況)是,它不是一個可更新的類,因爲NaiveBayesUpdateable可以很好地處理大量的數據,而這些數據可能一次都不適合內存。