📅  最后修改于: 2020-12-10 05:13:03             🧑  作者: Mango
Pybrain是一个使用Python实现的开源机器学习库。该库为您提供了一些易于使用的网络,数据集,培训师来训练和测试网络的培训算法。
官方文件对Pybrain的定义如下-
PyBrain是用于Python的模块化机器学习库。它的目标是为机器学习任务和各种预定义环境提供灵活,易于使用但仍功能强大的算法,以测试和比较您的算法。
PyBrain是基于Python的强化学习,人工智能和神经网络库的缩写。实际上,我们首先想出了这个名称,后来又对这个描述性很强的“ Backronym”进行了反向工程。
以下是Pybrain的功能-
网络由模块组成,它们通过连接进行连接。 Pybrain支持神经网络,例如前馈网络,递归网络等。
前馈网络是一个神经网络,节点之间的信息向前移动,永远不会向后移动。前馈网络是人工神经网络中可用的网络中的第一个和最简单的网络。
信息从输入节点传递到隐藏节点之后,再传递到输出节点。
循环网络类似于前馈网络;唯一的区别是它必须记住每个步骤中的数据。必须保存每个步骤的历史记录。
数据集是要在网络上测试,验证和训练的数据。使用的数据集类型取决于我们将要与机器学习一起完成的任务。 Pybrain支持的最常用的数据集是SupervisedDataSet和ClassificationDataSet 。
SupervisedDataSet-它由输入和目标字段组成。它是数据集的最简单形式,主要用于监督学习任务。
分类数据集-主要用于处理分类问题。它接受input , target字段以及一个称为“ class”的额外字段,该字段是给定目标的自动备份。例如,输出将为1或0,或者将根据给定的输入将值与值分组在一起,即,它将属于一个特定类别。
当我们创建一个网络(即神经网络)时,它将根据提供给它的训练数据进行训练。现在,是否对网络进行适当的培训将取决于对该网络上测试的测试数据的预测。 Pybrain培训中最重要的概念是使用BackpropTrainer和TrainUntilConvergence。
BackpropTrainer-这是一个训练器,通过对错误(在整个时间范围内)进行反向传播,根据受监管的或CategoryDataSet数据集(可能是顺序的)训练模块的参数。
TrainUntilConvergence-用于训练数据集中的模块直至收敛。
Pybrain提供的工具模块可通过导入软件包来帮助构建网络: pybrain.tools.shortcuts.buildNetwork
使用pybrain无法显示测试数据。但是Pybrain可以与Mathplotlib,pyplot等其他框架一起使用以可视化数据。
Pybrain的优点是-
Pybrain是学习机器学习的开源免费库。对于任何对机器学习感兴趣的新手来说,这都是一个好的开始。
Pybrain使用Python来实现它,与Java / C++之类的语言相比,Pybrain使它的开发速度更快。
Pybrain可与其他Python库轻松协作以可视化数据。
Pybrain支持流行的网络,例如前馈网络,循环网络,神经网络等。
在Pybrain中,使用.csv加载数据集非常容易。它还允许使用另一个库中的数据集。
使用Pybrain培训师可以轻松地对数据进行培训和测试。
Pybrain对于遇到的任何问题提供的帮助较少。在stackoverflow和Google Group上,有些查询没有答案。
根据Pybrain文档,机器学习的流程如下图所示-
首先,我们有原始数据,经过预处理后可以与Pybrain一起使用。
Pybrain的流程始于将数据集分为训练和测试数据。
创建网络,并将数据集和网络提供给培训师。
培训师在网络上训练数据并将输出分类为可以显示的训练错误和验证错误。
可以验证测试数据,以查看输出是否与训练数据匹配。
与Pybrain合作进行机器学习时,需要考虑一些重要术语。它们如下-
总错误-指的是在训练网络后显示的错误。如果错误在每次迭代中都在不断变化,则意味着它仍然需要时间来解决,直到在迭代之间开始显示恒定错误为止。一旦开始显示恒定的错误号,就意味着网络已经收敛,并且将保持不变,无论是否应用了任何其他培训。
训练后的数据-这是用于训练Pybrain网络的数据。
测试数据-这是用于测试经过训练的Pybrain网络的数据。
培训师-当我们创建一个网络(即神经网络)时,它将根据提供给它的培训数据进行培训。现在,是否对网络进行适当的培训将取决于对该网络上测试的测试数据的预测。 Pybrain培训中最重要的概念是使用BackpropTrainer和TrainUntilConvergence。
BackpropTrainer-这是一个训练器,通过对错误(在整个时间范围内)进行反向传播,根据受监管的或CategoryDataSet数据集(可能是顺序的)训练模块的参数。
TrainUntilConvergence-用于在数据集中训练模块直至收敛。
层-层基本上是在网络的隐藏层上使用的一组功能。
连接-连接的工作方式类似于图层;唯一的区别是它将数据从网络中的一个节点转移到另一个节点。
模块-模块是由输入和输出缓冲区组成的网络。
监督学习-在这种情况下,我们有一个输入和输出,我们可以利用一种算法将输入与输出进行映射。使该算法学习给定的训练数据并对其进行迭代,并且当算法预测正确的数据时,迭代过程将停止。
无人监督-在这种情况下,我们有输入但不知道输出。无监督学习的作用是利用给定的数据尽可能地接受训练。