如何使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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