Java,Weka:如何预测数字属性?

时间:2013-04-25 19:21:24

标签: java weka numeric predict

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

3 个答案:

答案 0 :(得分:12)

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

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

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

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

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

答案 1 :(得分:2)

你可以在weka分类器中找到使用回归>功能>线性回归。 这是在weka https://www.ibm.com/developerworks/opensource/library/os-weka1/

中创建回归模型的示例

答案 2 :(得分:1)

这些天,我相信首先在Weka 3.7中引入,RandomForest可以按照您的需要工作。这些特征可以是名义和数字的混合,并且允许预测也是数字。

缺点(我认为在你的情况下)是它不是一个可更新的类,因为NaiveBayesUpdateable适用于大量数据,这些数据可能不会同时适合内存。