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

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到1000000。创建1000000个类毫无意义。如何在Weka中预测数值属性或者在Weka没有此任务的工具的情况下寻找哪些算法?

可能是Java,Weka:NaiveBayesUpdateable:无法处理数值类的重复问题。虽然也有可能是因为这个问题更好一些。 - demongolem
3个回答

13
您想要做的是回归,而不是分类。两者之间的区别正是您所描述/想要的:
  • 分类具有离散的类别/标签,任何名义属性都可以用作类别。
  • 回归具有连续的标签,在这里使用“类”一词是错误的。

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

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

您可能需要使用NominalToBinary过滤器将名义属性转换为数值(二进制)属性。


2

最近几天,我相信首次引入Weka 3.7中的随机森林(RandomForest)可以按照您的要求工作。特征可以是名义和数值混合的,预测也允许是数值型的。

缺点(我想在您的情况下)是它不是可更新类,就像NaiveBayesUpdateable一样,它适用于大量数据,这些数据可能无法一次性全部放入内存中。


请问如何使用随机森林算法来预测数值?在Weka中,当我提供测试集并选择数值进行预测时,“开始”按钮变为不可用状态。 - Abu Shoeb
1
@AbuShoeb,使用Weka 3.8.3,我没有看到这个问题。我创建了一个包含3个数字特征和1个数字预测值的小数据集。我选择了随机森林。对我来说,开始仍然是高亮的。也许你正在使用额外的步骤,或者你正在使用不同版本的Weka?你能描述得更详细一些吗?如果需要,我们可以把这个问题带到https://chat.stackoverflow.com/。 - demongolem

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接