Greengguard项目是一个端到端解决方案的集合,用于监测风能生产系统中常见的机器学习任务。
greenguard的Python项目详细描述
麻省理工学院从数据到人工智能实验室的项目。
---------------------------
Greenguard是一个机器学习库,专为风力涡轮机和太阳能电池板安装产生的数据而构建。
绿色卫士
- 文档: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.series
和targets
表中的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子集中分割数据,可以通过分割
x
和y
变量,使用任何合适的工具。
在这种情况下,我们将使用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 greenguard0
一旦我们创建了管道,我们就可以调用它的tune
方法来找到最好的
数据的超参数,传递加载程序返回的x
、y
和表
变量,
以及要执行的调整迭代次数的指示。
pip install greenguard1
优化过程完成后,已在分类器中设置超参数。
我们可以通过调用get hyperparameters
方法来查看找到的超参数,
pip install greenguard2
它将返回一个字典,其中包含迄今为止找到的最佳超参数:
αα次级方案13以及通过查看
管道
对象:
pip install greenguard4
注意:如果分数不够好,我们可以多次调用tune
方法
根据需要,管道将在以前的基础上继续其优化过程
结果!
一旦我们对获得的交叉验证分数感到满意,我们可以继续调用
fit
方法再次传递相同的数据元素。
这将使管道与使用最佳超参数的所有可用培训数据相匹配 在调谐过程中发现:
pip install greenguard5 <H3>5。使用安装的管路
安装管道后,我们准备对新数据进行预测:
pip install greenguard6
并评估其预测性能:
pip install greenguard7 <H3>6。保存并加载管道
由于优化和拟合过程需要时间执行并且需要大量数据,因此 可能需要保存一个已安装的实例并在稍后加载它以分析新信号 而不是反复安装管道。
这可以通过使用greenguardpipeline
中的save
和load
方法来完成。
为了保存一个实例,调用它的save
方法传递路径和文件名
模型的保存位置。
pip install greenguard8
保存管道后,可以使用
greenguardpipeline.load
方法:
pip install greenguard9
加载后,它可以直接用于对新数据进行预测。
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注册表分发
分发最近创建的图像的最简单方法是使用注册表 为了做到这一点,我们需要有对公共或私有注册表的写访问权限(记住
登录!)并执行以下命令: 之后,在接收机器中: 如果由于任何原因必须脱机分发图像,则可以实现
使用以下命令。 在已经有图像的系统中: 然后将文件 在这些命令之后,应该可以使用 一旦 这可以通过两种方式实现: 如果绿色卫士的源代码在系统中可用,那么运行映像就像运行
此命令来自项目根目录: 这将使用Docker图像启动Jupyter笔记本,您可以通过指向
浏览器位于http://127.0.0.1:8888 rel="nofollow">http://127.0.0.1:8888
在这种情况下,项目的本地版本也将安装在Docker容器中,
这意味着您在本地代码中所做的任何更改都将立即可用
在您的笔记本中,并且您在jupyter中创建的任何笔记本也将显示
在您的 如果绿色卫士的源代码在系统中不可用,并且只有Docker映像可用,则可以
仍然使用此命令运行图像: 在这种情况下,代码将更改,而在jupyter中创建的笔记本将保留
在容器中,您只能通过
Jupyter接口。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
笔记本
文件夹中!
运行不带绿卫兵代码的绿卫兵Jupyter
fromgreenguard.loaderimportload_demoX,y,tables=load_demo()
0
历史记录
0.1.0
推荐PyPI第三方库