欢迎光临散文网 会员登陆 & 注册

从零开始扩展机器学习数据

2021-11-24 18:05 作者:深度之眼官方账号  | 我要投稿

许多机器学习算法都希望数据能够持续扩展。在本教程中,你可以学会如何为机器学习重新调整数据。挖坑一时爽,填坑拖延党,你们的赞将是学姐填坑的强大动力!点赞吧同学们!

 

许多机器学习算法期望输入数据甚至输出数据的规模是等价的。在线性回归和逻辑回归中,这有助于对输入进行加权以作出预测。在人工神经网络和深度学习等复杂的加权输入组合方法中,这很重要。

 

在本教程中,我们将练习缩放一个标准机器学习数据集的CSV格式。

 

用皮马印第安人数据集(共768行和9列)。文件中的所有值都是数字,特别是浮点值。我们将首先学习如何加载文件,然后学习如何将加载的字符串转换为数值。

 

数据集文件及详细信息:

https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.csv

https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.names

 

接下来教程三步走:1、规范化数据;2、标准化数据;3、何时规范化和标准化。

 

规范化数据

 

根据上下文的不同,规范化可以引用不同的技术。

 

在这里,我们使用规范化指的是将输入变量重新缩放到0到1之间。

 

规范化要求我们知道每个属性的最小值和最大值,通过枚举值,可以轻松估计数据集中每个属性的最小值和最大值。

 

如果您对问题领域有深入了解,则可以从训练数据中估计或直接指定。

 

下面的代码片段定义了dataset_minmax() 函数,该函数计算数据集中每个属性的最小值和最大值,然后返回这些最小值和最大值的数组。

 

 

我们可以设计一个小数据集进行测试,如下所示:

使用这个设计的数据集,我们可以测试计算每个列的最小值和最大值的函数。

 

运行该示例会产生以下输出。

 

首先,数据集以列表格式打印,然后每列的最小值和最大值以column1: min,max 和 column2: min,max格式打印。

 

例如:

 

 

一旦我们估计了每列的最大和最小允许值,我们现在可以将原始数据归一化到范围 0 和 1。

 

对列的单个值进行归一化的计算是:

 

 

接下来用normalize_dataset()函数,该函数对提供的数据集的每一列的值进行规范化。

 

 

可以将这个函数与dataset_minmax()函数绑定在一起,并对已创建的数据集进行规范化。

 

 

运行此示例将打印以下输出,包括标准化数据集。

 

 

我们可以将此代码与加载 CSV 数据集的代码结合起来,并加载和规范化 Pima Indians 糖尿病数据集。

 

下载 Pima Indians 数据集并将其放置在您当前的目录中,名称为pima-indians-diabetes.csv。

 

数据集文件:

https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.csv

 

打开文件并删除底部的所有空行。

 

该示例首先加载数据集并将每列的值从字符串转换为浮点值。每列的最小值和最大值从数据集中估计,最后,数据集中的值被归一化。

 

 

运行该示例会产生以下输出。

 

数据集中的第一条记录在标准化前后print,显示缩放的效果。

 

 

标准化数据

 

标准化是一种重新缩放技术,是指将数据的分布集中在值 0 上,将标准偏差集中在值 1 上。

 

均值和标准差可以一起用于总结正态分布,也称为高斯分布或钟形曲线。

 

它要求在缩放之前知道每列值的平均值和标准偏差。与上面的归一化一样,我们可以从训练数据中估计这些值,或者使用领域知识来指定它们的值。

 

让我们从创建函数来估计数据集中每一列的均值和标准差统计数据开始。

 

均值描述了一组数字的中间或集中趋势。列的平均值计算为列的所有值的总和除以值的总数。

 

 

下面名为column_means()的函数计算数据集中每一列的平均值。

 

 

标准偏差描述了值与平均值的平均分布。它可以计算为每个值与平均值之间的平方差之和除以值的数量减 1 的平方根。

下面名为column_stdevs()的函数计算数据集中每一列值的标准偏差,并假设已经计算了平均值。

 

同样,我们可以设计一个小数据集来演示对数据集的均值和标准差的估计。

 

使用 Excel 电子表格,我们可以估计每列的均值和标准差,如下所示:

 

使用设计的数据集,我们可以估计汇总统计信息。

 

执行该示例提供以下输出,与电子表格中计算出的数字相匹配。

一旦计算了汇总统计数据,我们就可以轻松地对每列中的值进行标准化。

 

标准化给定值的计算如下:

下面是一个名为standardize_dataset()的函数,它实现了这个方程

将其与用于估计均值和标准差汇总统计数据的函数相结合,我们可以标准化我们设计的数据集。

执行此示例会产生以下输出,显示人为数据集的标准化值。

同样,我们可以证明机器学习数据集的标准化。

 

下面的示例演示了如何加载和标准化 Pima Indians 糖尿病数据集,假设与前面的标准化示例一样位于当前工作目录中。

运行示例打印数据集的第一行,首先以加载的原始格式打印,然后标准化,这使我们能够看到差异以进行比较。

 

何时规范化和标准化

 

标准化是一种缩放技术,它假设您的数据符合正态分布。

 

如果给定的数据属性正常或接近正常,这可能是要使用的缩放方法。

 

记录标准化过程中使用的汇总统计数据是一种很好的做法,以便您可以在将来标准化数据时应用它们,您可能希望与您的模型一起使用。

 

规范化是一种不假设任何特定分布的缩放技术。

 

如果您的数据不是正态分布的,请考虑在应用机器学习算法之前对其进行标准化。

 

再次记录规范化过程中使用的每一列的最小值和最大值是一种很好的做法,以防您将来需要规范化新数据以用于您的模型。

 

 

文章来源:

https://machinelearningmastery.com/scale-machine-learning-data-scratch-python/

免责声明:所载内容来源互联网,仅供参考。转载稿件版权归原作者和机构所有,如有侵权,请联系我们删除。


从零开始扩展机器学习数据的评论 (共 条)

分享到微博请遵守国家法律