如何使用WEKA和NaiveBayes同时预测多个未标记属性?

我有一个包含96个元素的二进制数组,它可能看起来像这样:

[false, true, true, false, true, true, false, false, false, true.....]

每个元素代表从00:00开始的15分钟时间间隔。第一个元素是00:15,第二个是00:30,第三个是00:45,以此类推。布尔值表示在该时间间隔内房屋是否有人居住。

我想训练一个分类器,以便在只知道当天部分时间的情况下预测一天的剩余时间。假设我有过去100天的观测数据,并且我只知道当天前20个元素的情况。

我如何使用分类来预测一天的剩余时间?

我尝试创建了一个如下所示的ARFF文件:

@RELATION OccupancyDetection@ATTRIBUTE Slot1 {true, false}@ATTRIBUTE Slot2 {true, false}@ATTRIBUTE Slot3 {true, false}...@ATTRIBUTE Slot96 {true, false}@DATAfalse,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,falsefalse,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false.....

并对其进行了Naive Bayes分类。问题是,结果只显示了一个属性的成功情况(例如,最后一个属性)。

某一天的“真实”样本可能看起来像这样:

true,true,true,true,true,true,true,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?

我如何一次预测所有未标记的属性?

我根据WekaManual-3-7-11制作了这个,它可以工作,但只适用于单个属性:

    ..    Instances unlabeled = DataSource.read("testWEKA1.arff");    unlabeled.setClassIndex(unlabeled.numAttributes() - 1);    // create copy    Instances labeled = new Instances(unlabeled);    // label instances    for (int i = 0; i < unlabeled.numInstances(); i++) {    double clsLabel = classifier.classifyInstance(unlabeled.instance(i));    labeled.instance(i).setClassValue(clsLabel);    DataSink.write("labeled.arff", labeled);

回答:

抱歉,我认为你不能使用Weka中的Naive Bayes来预测多个属性。

作为替代方案,如果你通过Java代码运行Weka,你可以遍历所有需要填充的属性。这可以通过构建具有n个属性的分类器并填充下一个空白,直到所有缺失的数据都被填入来实现。

看起来你的数据还与时间有关。如果模型稍作重构,可能可以全部纳入一个模型中。例如,你可以有用于预测时间、星期几以及过去几小时的存在情况的属性,以及描述房屋历史存在的属性。这可能对你的问题来说有些过头,但也可以消除对多个分类器的需求。

希望这对你有帮助!

更新!

根据你的请求,我花了几分钟思考这个问题。这个基于时间的预测的关键是你希望能够预测一天的剩余时间,而你的分类器可用的数据量取决于一天中的时间。这意味着,根据当前结构,你需要为每个15分钟的时间段预测值的分类器,其中早期时段包含的输入数据远少于后期时段。

如果可能,你可以使用另一种方法,其中每个时间段使用相同数量的历史信息,并且可能为所有情况共享同一个分类器。一个可能的信息集可以如下所示:

  • 要估计的时间段
  • 星期几
  • 前一小时或两小时的活动
  • 前24小时的其他活动
  • 关于一般时间段的历史信息

如果你每天获取信息,可能会量化这些因素,然后用它来预测任何时间段。然后,如果你想预测一整天,你可以继续输入之前的预测,直到完成一天的预测。

我曾做过一个类似的预测到达时间的问题,基于类似的因素(之前的行为、公共假日、星期几等),估计通常是合理的,尽管对于人类过程来说准确性可能不如预期。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注