6

我试图使用 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 没有用于此任务的工具的情况下寻找什么算法?

4

3 回答 3

13

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

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

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

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

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

于 2013-04-28T18:31:46.340 回答
2

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

于 2013-05-20T08:42:47.573 回答
2

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

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

于 2016-12-11T03:09:41.467 回答