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

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

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

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

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

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

  • MultilayerPerceptron :基本上是神经网络。
  • LinearRegression :顾名思义,线性回归。

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

你可以在weka分类器>函数>线性回归中找到使用回归。 以下是在weka中创建回归模型的示例https://www.ibm.com/developerworks/opensource/library/os-weka1/

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

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