一个热门的Gym预测教程。

来源:https://github.com/numenta/nupic/tree/master/examples/opf/clients/hotgym/prediction/one_gym#running

这个文件夹中的程序是“一个热门的Gym预测”教程的完整源代码。您可以在下面的screencast中继续构建本教程的源代码。

1、前提

“热体育馆”的示例应用程序已经存在了很长时间,它是NuPIC实际工作的第一个实际应用程序。所使用的数据是澳大利亚一家健身房的真实能耗数据。它已经每小时聚合一次,所以rec-center-hourly.csv的输入文件只包含一个时间戳和一个浮点值,用于在该小时内的能源消耗。

本教程展示了如何使用该数据文件,创建一个群集来找到最佳的NuPIC模型参数,然后使用这些模型参数创建一个NuPIC模型,并将数据输入其中,获得每一行输入到NuPIC中的数据的1步前预测。从本质上讲,这个例子展示了NuPIC如何预测未来一小时的建筑能耗。

2、项目描述

这是一个程序,由使用NuPIC的在线预测框架的一个简单的Python脚本集合组成。程序执行在下面的程序部分中进行了描述。这个程序执行两个步骤,以获得来自rec-center-hourly.csv文件的输入数据的预测,如下所述。还有一个可选步骤(清理),它可以在之前的步骤运行之后从文件系统中移除一些文件。

3、项目阶段

3.1 对输入数据进行群集

群集并不完美,但它是我们为特定数据集找到最佳的nupic模型参数的一种基本方式,它只需要完成一次,并且可以在数据的一个子集上执行。NuPIC对rec-center-hourly.csv中的结构和数据类型一无所知,所以我们必须定义这个数据。

3.1.1群描述

群集过程需要初始的群集描述,该描述定义输入数据,并限制在群集过程中必须发生的一些排列。本教程应用程序的群集描述在swarm_description.py文件中,如下所示:

{

  "includedFields": [

    {

      "fieldName": "timestamp",

      "fieldType": "datetime"

    },

    {

      "fieldName": "kw_energy_consumption",

      "fieldType": "float",

      "maxValue": 53.0,

      "minValue": 0.0

    }

  ],

  "streamDef": {

    "info": "kw_energy_consumption",

    "version": 1,

    "streams": [

      {

        "info": "Rec Center",

        "source": "file://rec-center-hourly.csv",

        "columns": [

          "*"

        ]

      }

    ],

  },

  "inferenceType": "TemporalMultiStep",

  "inferenceArgs": {

    "predictionSteps": [

      1

    ],

    "predictedField": "kw_energy_consumption"

  },

  "iterationCount": -1,

  "swarmSize": "medium"

}

includedFields:这些对应的是在搜索模型参数时集群将使用的数据列。需要一个fieldName和fieldType。在这个例子中,我们为kw_energy_consuption数据列指定了最小值和最大值,这将帮助集群逻辑限制它所做的工作的数量,以找到最佳的参数。

streamDef:告诉群集输入数据文件的位置。您必须将“file://”前缀放在到streamssource中定义的数据文件的路径之前。路径可以是相对的,也可以是绝对的。

inferenceType:表明我们希望基于时间的多步预测评估。其他推理类型包括多步、非时间多步和时间异常(Multistep,NontemporalMultistep, andTemporalAnomaly)。

inferenceArgs:定义哪个字段应该预测,应该未来该预测该域的需多少个步骤。在predictionSteps可以指定几个提前预测,但请注意,更多预测步骤将减缓NuPIC执行。

iterationCount:多少行输入数据文件内群。如果-1,假设所有行。

swarmSize:可以是小、中等和大。小型集群只用于调试。中等的蜂群几乎都是你想要的。大的蜂群需要很长时间,但是比中等的要好一点。

3.1.2群的结果

(1)工作文件(垃圾)

一旦群集完成,您将在工作目录中看到一个群集文件夹。它包含群集的内部工作方式,其中包括用于高级群集的实用程序(超出本教程的范围)。本教程应用程序将所有的垃圾文件放入群集文件夹中,主要是为了保持工作目录的整洁。当您在群集CLI中运行集群时,所有这些cruft都被转储到当前工作目录中。

(2)模型参数(黄金!)

在model_params目录中,您还会看到一个python文件出现,称为rec-center-hourly_model_params.py。这个文件包含一个配置对象,用于群集为输入数据找到的最佳模型。这个配置对象用于在下一步中创建NuPIC模型。

4 运行NuPIC模型

群集的主要结果是最佳的模型配置(详细介绍)。一旦确定了最佳的模型参数,就可以创建一个新的NuPIC模型对象,将数据传递给它,并可以检索预测。在程序的这一阶段,创建了一个新模型,并且每小时刷新一次。csv输入数据文件逐行输入到模型中。对于每行提要,将从NuPIC模型中检索下一个能耗值的预测,并将其写入文件或显示在屏幕上的图表中。

5 清理(可选)

这个阶段只是从文件系统中删除在以前步骤中创建的所有文件构件,并为以后的程序执行提供一个干净的记录。

6 运行程序

这个程序由3个可以从命令行执行的Python脚本和几个助手模块组成。可执行脚本是swarm.py、run.py和cleanup.py。每个脚本都打印出执行时所执行的操作的描述。

有两个主要步骤:群集和运行。这些步骤的描述都在上面。

6.1群集

 / swarm.py

硬编码以运行本教程应用程序的rec-center-hourlycsv输入。对于一个中等规模的集群来说,可能需要相当长的时间,这取决于您的硬件资源。

6.2运行

/ runpy(——情节)

如果没有指定plot,则将预测写入当前工作目录中的rec-center-hourly_out.csv文件。如果——plot被指定,将尝试使用matplotlib在屏幕上绘图。如果没有安装matplotlib,这将严重失败。

6.3清理

/ cleanup.py

前面的步骤在文件系统中保留了一些构件。运行此命令将其清理干净并从头开始。

你可能感兴趣的:(一个热门的Gym预测教程。)