【问题标题】:Java, Weka: How to predict numeric attribute?Java,Weka:如何预测数字属性?
【发布时间】:2013-04-19 20:05:32
【问题描述】:

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

【问题讨论】:

标签: java weka numeric predict


【解决方案1】:

您要做的是回归,而不是分类。差异正是您所描述/想要的:

  • 分类具有离散的类/标签,任何名义属性都可以在这里用作类
  • 回归有连续的标签,类在这里是一个错误的术语。

大多数基于回归的技术可以通过定义阈值转换为二元分类,并且根据预测值是高于还是低于该阈值来确定类别。

我不知道所有提供回归的 WEKA 分类器,但您可以从这两个开始:

您可能必须使用NominalToBinary 过滤器将名义属性转换为数字(二进制​​)属性。

【讨论】:

    【解决方案2】:

    您可以在 weka 分类器 > 函数 > 线性回归中找到使用回归。 这是一个在weka中创建回归模型的例子https://developer.ibm.com/articles/os-weka1/

    【讨论】:

      【解决方案3】:

      这些天来,我相信在 Weka 3.7 中首次引入的 RandomForest 会按照您的意愿工作。特征可以是名义和数字的混合,并且预测也可以是数字的。

      缺点(我想在你的情况下)是它不是一个 Updateable 类,因为 NaiveBayesUpdateable 可以很好地处理可能无法一次全部放入内存的大量数据。

      【讨论】:

      • 您能告诉我如何使用随机森林来预测数值吗?在 weka 中,当我提供一个测试集并选择预测的数值时,start 变为禁用。
      • @AbuShoeb 使用 Weka 3.8.3,我看不到这一点。我创建了一个包含 3 个 num 特征和 1 个 num 预测值的小型数据集。我选择随机森林。开始对我来说仍然突出显示。也许您正在使用一个额外的步骤,或者您正在使用不同版本的 Weka?你能描述更多吗?如果需要,我们可以将其发送至chat.stackoverflow.com
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2017-12-16
      • 2017-10-12
      • 1970-01-01
      • 2015-04-13
      • 2014-01-05
      • 2017-04-30
      相关资源
      最近更新 更多