一个热门的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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容