Greengguard项目是一个端到端解决方案的集合,用于监测风能生产系统中常见的机器学习任务。

greenguard的Python项目详细描述


dai

麻省理工学院从数据到人工智能实验室的项目。

---------------------------

greenguard

Greenguard是一个机器学习库,专为风力涡轮机和太阳能电池板安装产生的数据而构建。

pypi shieldtravis ci shield

绿色卫士

  • 文档:https://d3-ai.github.io/greenguard" rel="nofollow">https://d3-ai.github.io/greenguard
  • 主页:https://github.com/d3-ai/greenguard" rel="nofollow">https://github.com/d3-ai/greenguard

概述

Greenguard项目是机器学习任务的端到端解决方案的集合 在监测风能生产系统中发现。大多数任务利用传感器数据 来自监测系统。我们利用为 麻省理工学院人工智能实验室的数据机器学习自动化。

这个定制项目的主要方面是:

  • 为不同的机器学习任务提供的一套现成的、经过良好测试的管道。这些是 在同一任务的多个公共可用数据集上通过测试进行审查。
  • 一个简单的界面,用于指定任务、管道和生成结果并对其进行汇总。
  • 生产就绪,可部署的管道。
  • 使用Bayesian Tuning and Bandits Library提供了一个简单的接口,可以优化管道。
  • 以社区为导向的基础设施,以整合新管道。
  • 强大的持续集成和测试基础架构。
  • a学习数据库记录所有过去的结果-->;任务、流程、结果。

数据格式

Greenguard Pipelines处理格式如下的时间序列:

  • a涡轮机表,包含:
    • 风机ID:具有每个风机唯一ID的列。
    • 多个附加列,其中包含有关每个涡轮的信息。
  • a表示包含以下内容的表:
    • 信号ID:具有每个信号唯一ID的列。
    • 多个附加列,其中包含有关每个信号的信息。
  • a读数表包含:
    • 读取ID:此读取的唯一标识符。
    • 风机ID:此读数来自的风机的唯一标识符。
    • 信号id:此读数来自的信号的唯一标识符。
    • 时间戳:以ISO格式的日期时间进行读取的时间。
    • :此读数的数值。
  • atargets表,其中包含:
    • 目标ID:风机的唯一标识符此标签对应于。
    • 风机ID:此标签对应的风机的唯一标识符。
    • 时间戳:与此目标关联的时间
    • target-可选:要预测的值。这可以是一个数字 值或分类标签。在准备 将仅用于进行预测,而不用于任何管道。

演示数据集

为了进行开发和演示,我们包含了一个数据集,其中包含来自多个遥测的数据 与一个风能发电涡轮机相关的信号。

这些数据已经按照Greenguard管道的预期格式化,可以是 直接从 d3 ai greenguard aws s3 bucket

该数据集改编自Cohen,Elliot J.在项目中使用的数据集。 "风力分析",西非经共体可再生能源和能源效率中心、联合国工业发展组织(工发组织)和可持续工程实验室的联合倡议。哥伦比亚大学,2014年8月22日。 可在此处在线获取

对原始数据集执行的操作的完整列表,以将其转换为 我们在这里使用的演示版在 绿色防护演示数据笔记本

概念

在深入了解软件使用之前,我们先简要地解释一些概念和术语。

原语

我们称机器学习过程中使用的最小计算块为 原语,其中:

  • 可以是类或函数。
  • 有一些初始化参数,mlblocks调用init_params
  • 有一些可调的超参数,它们有类型和有效值的列表或范围。

模板

原语可以组合起来形成我们称之为模板的模板,模板:

  • 有一个原语列表。
  • 有一些初始化参数,它们对应于初始化参数 它们的原语。
  • 有一些可调超参数,它们对应于可调超参数 它们的原语。

管道

模板可以通过获取和修复一组有效的 模板的超参数。因此,管道:

  • 有一个基元列表,它对应于模板的基元列表。
  • 有一些初始化参数,它们对应于初始化参数 他们的模板。
  • 有一些超参数值,它们在有效可调范围内 模板的超参数。

可以使用mlblocks中的mlpipeline api来安装和评估管道。

当前任务和管道

在当前阶段,我们将处理两个任务-时间序列分类和时间序列 回归。为了为这两项任务提供解决方案,我们有两个组件。

绿色防护管道

这个班负责从数据中学习并通过构建 mlblocks管道,稍后使用 btb

绿卫兵装载机

一个类,负责从csv文件加载时间序列数据,并在 格式已准备好供GreenGuardPipeline使用

调谐

我们调用优化过程,给定一个数据集和一个模板,查找从 给定的模板在给定的数据上获得尽可能好的分数ASE.

这个过程通常涉及到用不同的超参数拟合和评估多个管道 在使用优化算法推断哪些超参数更大时,对相同数据的值 可能在下一次迭代中获得最佳结果。

我们将每个尝试称为优化迭代

入门

要求

巨蟒

greenguard已经在python 3.5、3.6和3.7上开发并运行。

此外,尽管不是严格要求,但使用avirtualenv 强烈建议使用,以避免干扰系统中安装的其他软件 在您试图运行绿色卫士的地方

安装

安装绿色卫士的最简单和推荐方法是使用pip:

pip install greenguard

对于开发,您还可以克隆存储库并从源安装它

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop

快速启动

在本例中,我们将使用greenguardloader加载一些演示数据,并将其提取到 greenguardpipeline要找到最佳管道,请使用给定的数据对其进行拟合 然后根据它进行预测。

<H3>1。加载并浏览数据

第一步是加载演示数据。

为此,我们将导入并调用不带任何参数的greenguard.loader.load\u demo函数:

fromgreenguard.loaderimportload_demoX,y,tables=load_demo()

返回的对象是:

x:apandas.dataframe目标的表数据,不带目标的列。

   target_id  turbine_id  timestamp
0          1           1 2013-01-01
1          2           1 2013-01-02
2          3           1 2013-01-03
3          4           1 2013-01-04
4          5           1 2013-01-05

y:apandas.seriestargets表中的target列。

0    0.0
1    0.0
2    0.0
3    0.0
4    0.0
Name: target, dtype: float64

表格:包含三个表格的字典,格式如上所述:

涡轮表:

   turbine_id       name
0           1  Turbine 1

信号表:

   signal_id                                          name
0          1  WTG01_Grid Production PossiblePower Avg. (1)
1          2  WTG02_Grid Production PossiblePower Avg. (2)
2          3  WTG03_Grid Production PossiblePower Avg. (3)
3          4  WTG04_Grid Production PossiblePower Avg. (4)
4          5  WTG05_Grid Production PossiblePower Avg. (5)

以及读数表:

   reading_id  turbine_id  signal_id  timestamp  value
0           1           1          1 2013-01-01  817.0
1           2           1          2 2013-01-01  805.0
2           3           1          3 2013-01-01  786.0
3           4           1          4 2013-01-01  809.0
4           5           1          5 2013-01-01  755.0
<H3>2。拆分数据

如果我们想在train和test子集中分割数据,可以通过分割 xy变量,使用任何合适的工具。

在这种情况下,我们将使用scikit learn中的train_test_split函数来执行此操作

fromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)
<H3>3。寻找最佳管道

加载数据后,通过传递:

  • 模板(字符串):模板的名称或模板json文件的路径。
  • 度量(字符串或函数):要使用的度量或要使用的度量函数的名称。
  • 成本(bool):指标是要最小化的成本函数还是要最大化的分数。

或者,我们也可以传递有关交叉验证配置的defails:

  • 分层
  • cv_拆分
  • 随机播放
  • 随机状态

在这种情况下,我们将使用 精度度量,仅使用两个交叉验证拆分:

pip install greenguard
0

一旦我们创建了管道,我们就可以调用它的tune方法来找到最好的 数据的超参数,传递加载程序返回的xy变量, 以及要执行的调整迭代次数的指示。

pip install greenguard
1

优化过程完成后,已在分类器中设置超参数。

我们可以通过调用get hyperparameters方法来查看找到的超参数,

pip install greenguard
2

它将返回一个字典,其中包含迄今为止找到的最佳超参数:

αα次级方案13

以及通过查看 管道对象:

pip install greenguard
4

注意:如果分数不够好,我们可以多次调用tune方法 根据需要,管道将在以前的基础上继续其优化过程 结果!

<H3>4。安装管路

一旦我们对获得的交叉验证分数感到满意,我们可以继续调用 fit方法再次传递相同的数据元素。

这将使管道与使用最佳超参数的所有可用培训数据相匹配 在调谐过程中发现:

pip install greenguard
5 <H3>5。使用安装的管路

安装管道后,我们准备对新数据进行预测:

pip install greenguard
6

并评估其预测性能:

pip install greenguard
7 <H3>6。保存并加载管道

由于优化和拟合过程需要时间执行并且需要大量数据,因此 可能需要保存一个已安装的实例并在稍后加载它以分析新信号 而不是反复安装管道。

这可以通过使用greenguardpipeline中的saveload方法来完成。

为了保存一个实例,调用它的save方法传递路径和文件名 模型的保存位置。

pip install greenguard
8

保存管道后,可以使用 greenguardpipeline.load方法:

pip install greenguard
9

加载后,它可以直接用于对新数据进行预测。

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
0

使用自己的数据集

一旦您熟悉greenguardpipeline用法,您可能会希望运行它 在您自己的数据集上。

以下是必要的步骤:

<H3>1。准备数据

首先,您需要将数据准备为4个csv文件,如 上面的数据格式部分。

<H3>2。创建greenguardloader

一旦准备好csv文件,就需要导入greenguard.loader.greenguardloader 类并创建实例传递:

  • path-str:4个csv文件所在文件夹的路径
  • target-str,可选:目标表的名称。默认为目标
  • 目标列-str,可选:目标列的名称。默认为目标
  • 读数-str,可选:读数表的名称。默认为读数
  • turbines-str,可选:turbines表的名称。默认为风轮机
  • signals-str,可选:信号表的名称。默认为信号
  • 读数-str,可选:读数表的名称。默认为读数
  • gzip-bool,可选:如果CSV文件是gzip文件,则设置为true。默认为false。

例如,我们将在这里加载一个自定义数据集,该数据集已按gzip格式排序 在"我的数据集"文件夹中,目标表有不同的名称:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
1 <H3>3。调用loader.load方法。

一旦创建了loader实例,我们就可以调用它的load方法:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
2

或者,如果数据集只包含进行预测的数据和target列 不存在,我们可以传递参数false以跳过它:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
3

Docker用法

绿色卫士已配置并准备好作为Docker映像分发和运行 jupyter笔记本已经配置为使用greenguard,并且所有必需的依赖项都已经配置好 已安装。

要求

<运行绿色卫士Docker映像的唯一要求是安装Docker并 用户有足够的权限运行它。

任何可能的系统兼容的安装说明都可以在这里找到

此外,建立绿卫兵码头形象的系统也需要有一个 允许下载基本图像和其他依赖python的内容的Internet连接。

打造绿色卫士码头形象

在克隆了greenguard存储库之后,您所要做的就是构建greenguard docker 映像正在运行此命令:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
4

几分钟后,名为greenguard jupyter的新图像将被构建到系统中 并且可以随时使用或分发。

分发绿色卫士Docker图像

一旦greenguard jupyter映像构建完成,它可以以多种方式分发。

使用Docker注册表分发

分发最近创建的图像的最简单方法是使用注册表

为了做到这一点,我们需要有对公共或私有注册表的写访问权限(记住 登录!)并执行以下命令:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
5

之后,在接收机器中:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
6

作为文件分发

如果由于任何原因必须脱机分发图像,则可以实现 使用以下命令。

在已经有图像的系统中:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
7

然后将文件greenguard jupyter.tar复制到新系统,然后运行:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
8

在这些命令之后,应该可以使用greenguard jupyter图像,并可以在 新系统。

运行Greenguard Jupyter图像

一旦greenguard jupyter映像被构建、拉取或加载,它就可以运行了。

这可以通过两种方式实现:

使用代码运行greenguard jupyter

如果绿色卫士的源代码在系统中可用,那么运行映像就像运行 此命令来自项目根目录:

git clone git@github.com:D3-AI/GreenGuard.git
cd GreenGuard
make install-develop
9

这将使用Docker图像启动Jupyter笔记本,您可以通过指向 浏览器位于http://127.0.0.1:8888 rel="nofollow">http://127.0.0.1:8888

在这种情况下,项目的本地版本也将安装在Docker容器中, 这意味着您在本地代码中所做的任何更改都将立即可用 在您的笔记本中,并且您在jupyter中创建的任何笔记本也将显示 在您的笔记本文件夹中!

运行不带绿卫兵代码的绿卫兵Jupyter

如果绿色卫士的源代码在系统中不可用,并且只有Docker映像可用,则可以 仍然使用此命令运行图像:

fromgreenguard.loaderimportload_demoX,y,tables=load_demo()
0

在这种情况下,代码将更改,而在jupyter中创建的笔记本将保留 在容器中,您只能通过 Jupyter接口。

历史记录

0.1.0

  • pypi上的第一个版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javaiworkspaceroot。getFileForLocation()返回null   java如何最小化输入异常   java在从Classloader加载“scl”字段时没有此类字段异常   JAVAutil。JavaEE中ManagedExecutorService和ManagedThreadFactory的并发差异   ArraysJava,与数组处于相同位置的元素之和   java Hibernate 5没有FieldHandled类   java如何使用hibernate只验证特定的表   使用不同端口的java UDP读/写   返回集合的类型。使用java在mongodb中查找   java取消在JFileChooser中选择文件而不关闭对话框   为什么在Java中,将16右移32得到16而不是0?16> >32=16为什么?   java在创建apk文件时发现错误“:app:mergeDebugResources”   java为什么我的会话创建策略设置为无状态时Spring Security的SessionManagementFilter会运行?   避免耦合的多文件格式的java句柄转换