机器学习中的数据标准化

标准化方法

Z-score Normalization

Z-score normalization又叫?standardization(规范化),将特征进行缩放使得其具有均值为0,方差为1的标准正态分布的特性。
\[
z = \frac{x-\mu}{\sigma}
\]
其中均值\(\mu = \frac{1}{N} \sum_{i=1}^N (x_i)\),方差\(\sigma = \sqrt{\frac{1}{N} \sum_{i=1}^N (x_i - \mu)^2}\)。

标准化特征使其具有0均值1方差不仅对于比较单位不同的测量有用,而且还是众多机器学习算法的普遍要求。如果特征在不同的尺度下,不同的权重更新的速率会差异很大,不利于算法的收敛。

Mix-max Normalization

另一种常用的标准化叫Mix-max normalization,通常被简称为normalization(标准化)。这种方法将数据放缩到一个固定的区间,通常是0到1之间。

\[
z = \frac{x-\min{(x)}}{\max{(x)}-\min{(x)}}
\]

Constant Normalization

将数据除以一个固定的常数,比如最大值:
\[
z = \frac{x}{\max{(|x|)}}
\]

Binary Encoding

类别值(Categorical values)例如性别可以编码为0和1,如男性为1,女性为0,也可以编码为-1和1.

Manhattan Encoding

如果是不能二进制编码的类别值,可以使用曼哈顿编码Manhattan encoding,使用0或1来表示特征是否被包含:

例如:在宗教类别中,可以将穆斯林(Muslim)、印度教(Hindu)和基督教(Christian)分别编码为 [1 0 0][0 1 0][0 0 1]

示例代码

代码参考自About Feature Scaling and Normalization

import pandas as pd
import numpy as np

df = pd.io.parsers.read_csv(
    'https://raw.githubusercontent.com/rasbt/pattern_classification/master/data/wine_data.csv',
     header=None,
     usecols=[0,1,2]
    )
df.columns=['Class label', 'Alcohol', 'Malic acid']
df.head()

from sklearn import preprocessing

# Compute the mean and std to be used for later scaling.
std_scale = preprocessing.StandardScaler().fit(df[['Alcohol', 'Malic acid']])
# Perform standardization by centering and scaling
df_std = std_scale.transform(df[['Alcohol', 'Malic acid']]) 

minmax_scale = preprocessing.MinMaxScaler().fit(df[['Alcohol', 'Malic acid']])
df_minmax = minmax_scale.transform(df[['Alcohol', 'Malic acid']])

print('Mean after standardization:\nAlcohol={:.2f}, Malic acid={:.2f}'
      .format(df_std[:,0].mean(), df_std[:,1].mean()))
print('\nStandard deviation after standardization:\nAlcohol={:.2f}, Malic acid={:.2f}'
      .format(df_std[:,0].std(), df_std[:,1].std()))

print('\nMin-value after min-max scaling:\nAlcohol={:.2f}, Malic acid={:.2f}'
      .format(df_minmax[:,0].min(), df_minmax[:,1].min()))
print('Max-value after min-max scaling:\nAlcohol={:.2f}, Malic acid={:.2f}'
      .format(df_minmax[:,0].max(), df_minmax[:,1].max()))

from sys import platform as _platform
if _platform == "darwin":
    import matplotlib
    matplotlib.use('TkAgg')
from matplotlib import pyplot as plt

def plot():
    plt.figure(figsize=(8,6))

    plt.scatter(df['Alcohol'], df['Malic acid'],
            color='green', label='input scale', alpha=0.5)

    plt.scatter(df_std[:,0], df_std[:,1], color='red',
            label='Standardized [$N  (\mu=0, \; \sigma=1)$]', alpha=0.3)

    plt.scatter(df_minmax[:,0], df_minmax[:,1],
            color='blue', label='min-max scaled [min=0, max=1]', alpha=0.3)

    plt.title('Alcohol and Malic Acid content of the wine dataset')
    plt.xlabel('Alcohol')
    plt.ylabel('Malic Acid')
    plt.legend(loc='upper left')
    plt.grid()

    plt.tight_layout()

plot()
plt.show()

结果

Reference

原文地址:https://www.cnblogs.com/VVingerfly/p/10699350.html

时间: 2024-11-08 20:58:28

机器学习中的数据标准化的相关文章

蜡炬教育:如何处理机器学习中大型数据的加载问题?

原标题:蜡炬教育:如何处理机器学习中大型数据的加载问题? 蜡炬教育老师表示,在处理机器学习算法时,经常会因为数据库太大而导致无法放入内存中,而遇到这样几个问题:当运行数据集算法而导致崩溃时如何解决?当需要处理大容量数据文件时该如何加载?如何方便快捷的解决内存不足的问题? 针对以上问题,蜡炬教育老师给出7个建议: 1.分配更多内存某些ML工具或数据库默认内存配置不合理,可以看看是否可以手动分配. 2.使用较小样本确认是否需要处理所有数据?在对最终数据拟合前,使用随机抽取数据样本这个示例即可. 3.

R中,数据标准化方法

标准化方法(Normalization Method)数据的标准化是将数据按比例缩放,使之落入一个小的特定区间.由于指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间.一般常用的有以下几种方法.(1) 最小-最大规范化对原始数据进行线性变换.假定MaxA与MinA分别表示属性A的最大与最小值.最小最大规范化通过计算将属性A的值映射到区间[a, b]上的v.一般来说,将最小-最大规范化在用于信用指标数据上,常用的有以下两

机器学习中的数据不平衡问题

最近碰到一个问题,其中的阳性数据比阴性数据少很多,这样的数据集在进行机器学习的时候会使得学习到的模型更偏向于预测结果为阴性.查找了相关的一些文献,了解了一些解决这个问题的一些方法和技术. 首先,数据集不平衡会造成怎样的问题呢.一般的学习器都有下面的两个假设:一个是使得学习器的准确率最高,另外一个是学习器应该用在与训练集有相同分布的 测试集上.如果数据不平衡,那么学习器使得它的准确率最高肯定是更偏向于预测结果为比例更大的类别.比如说阳性的比例为1%,阴性的比例为99%,很明显 的是即使不学习,直接

对于机器学习中,数据增强

众所周知,数据对机器学习来说是那么的重要,但是我们通常因为各种原因得不到 理想的数据量,这时候我们就想到进行数据增强.比如添加噪声,左右镜像,随机crop 一部分等,但是有一点要注意的,就是要记住我们要机器学习的是什么特征,比如说人脸, 眼睛,嘴巴等,这时候添加噪声就不能改变这些特征.一句话:喂给机器什么数据,机器 就学什么数据.(但注意,并不是你觉得是这样,机器就真的这样,因为,机器可能通过 其他方式进行学习,所以数据量越大,机器可选择的路越少,就越有可能按照你的想法学 习对应的特征.数据量越

【机器学习】解决数据不平衡问题

在机器学习的实践中,我们通常会遇到实际数据中正负样本比例不平衡的情况,也叫数据倾斜.对于数据倾斜的情况,如果选取的算法不合适,或者评价指标不合适,那么对于实际应用线上时效果往往会不尽人意,所以如何解决数据不平衡问题是实际生产中非常常见且重要的问题. 什么是类别不平衡问题 我们拿到一份数据时,如果是二分类问题,通常会判断一下正负样本的比例,在机器学习中,通常会遇到正负样本极不均衡的情况,如垃圾邮件的分类等:在目标检测SSD中,也经常遇到数据不平衡的情况,检测器需要在每张图像中评价一万个到十万个候选

如何解决机器学习中数据不平衡问题

作者:无影随想 时间:2016年1月. 出处:http://www.zhaokv.com/2016/01/learning-from-imbalanced-data.html 声明:版权所有,转载请联系作者并注明出处 这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值.与此同时,越来越多的机器学习算法从学术界走向工业界,而在这个过程中会有很多困难.数据不平衡问题虽然不是最难的,但绝对是最重要的问题之一. 一.数据不平衡 在学术研究与教学中,很多算法都有一个基本假设,那就是数据分布是

[转] [机器学习] 常用数据标准化(正则化)的方法

数据正则化 目的:为了加快训练网络的收敛性,可以不进行归一化处理 源地址:http://blog.sina.com.cn/s/blog_8808cae20102vg53.html 而在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级.当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用.因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理. 目前数据标准化方法有多种,归结起来可以分为直线型

机器学习中的标签数据和无标签数据

今天在数据人网上看到一篇文章.区分监督学习和无监督学习,监督学习的数据就是有标签数据,无监督学习的数据就是无标签数据.这是我的理解,欢迎指教. 原文链接http://www.shujuren.org/article/62.html 原文如下 监督式和非监督式机器学习算法 作者Frankchen 什么是监督式机器学习,它与和非监督式机器学习有什么关联呢? 本文中你将了解到监督式学习,非监督式学习和半监督式学习在阅读本文之后你将知道如下知识: 有关分类和回归的监督式学习问题 关于聚类和关联非监督式学

转:数据标准化/归一化normalization

转自:数据标准化/归一化normalization 这里主要讲连续型特征归一化的常用方法.离散参考[数据预处理:独热编码(One-Hot Encoding)]. 基础知识参考: [均值.方差与协方差矩阵] [矩阵论:向量范数和矩阵范数] 数据的标准化(normalization)和归一化 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较