【问题标题】:Java, Weka: How to predict numeric attribute? [duplicate]Java,Weka:如何预测数字属性? [复制]
【发布时间】:2013-04-25 18:52:08
【问题描述】:

我试图使用 Weka 的 NaiveBayesUpdateable 分类器。我的数据包含名义属性和数字属性:

  @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 没有用于此任务的工具,需要寻找哪些算法?

【问题讨论】:

    标签: machine-learning weka bayesian


    【解决方案1】:

    这根本不是分类问题。您应该为此使用 regression 模型,例如LinearRegression.

    【讨论】:

    • 在什么情况下可以使用以下技术:将数值属性的值拆分为 N 个长度为 k 的区间,并使用名义属性,其中 n 是类名,如下所示:@attribute class {1 ,2,3,...N} ?.
    • @AntonAshanin:将实值 特征 交给 NB 分类器时,这是个好主意。
    【解决方案2】:

    正如@larsmans 提到的,这不是分类,而是回归模型。问题是回归仅适用于数字数据。分类数据的标准方法是使用所谓的dummy variables。每个虚拟变量代表分类变量的一种状态,为 1 或 0。因此,您的属性列表可能会更改为以下内容:

    @relation cars
    @attribute country_FR
    @attribute country_UK
    ...
    @attribute city_London
    @attribute city_Paris
    ...
    

    例如,如果城市是伦敦,则变量 city_London 将设置为 1,而所有其他 city_* 变量将设置为 0。

    【讨论】:

    • 在什么情况下可以使用以下技术:将数值属性的值拆分为 N 个长度为 k 的区间,并使用名义属性,其中 n 是类名,如下所示:@attribute class {1 ,2,3,...N} ?.
    • Weka 不会在内部处理这个问题吗?
    • Weka 在内部使用这种转换,但是您将无法通过这种方式获得参数系数之类的东西。要完全控制属性集,请先使用NominalToBinary 过滤器。
    猜你喜欢
    • 2013-04-19
    • 2017-12-16
    • 1970-01-01
    • 2012-08-03
    • 2017-10-12
    • 1970-01-01
    • 2015-04-13
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多