归一化,标准化的小总结

摘要

  • python3.65
  • 名词替换:每一个样本为每一行;每一个特征为每一列
  • 归一化,标准化,标准化代码实现都在代码片中。

前言

  • 问:数据为什么要归一化或者标准化?
  • 答:当一组数据中,所有特征对数据分析的作用都是一样,但是数值大小却差别很大的时候,就需要用到归一化或者标准化。

归一化

  • 特点:通过对原数据的处理,转换数据范围在0-1之间
  • 实现公式:
    x 1 = x m i n m a x m i n x 2 = x 1 × ( m x m i ) + m i x1=\frac{x-min}{max-min} \qquad \qquad x2=x1\times(mx-mi)+mi
  • 公式介绍:x2:最终值;x:每个特征的每个数据;max:该特征最大值;min:该特征最小值;mx:生成数据范围最大值;mi:生成数据最小值。mi,mx=0,1 (默认)
  • 作用域:每一个特征(也就是每一列)
  • 缺点:异常值对最大值和最小值影响很大,它对异常点处理不好,鲁棒性差。
  • 适用场景:适合传统精确小数据场景(场景较少)

标准化

  • 特点:通过对原始数据进行变换,把数据变为均值为0,方差为1的范围
  • 实现公式:
    x 1 = x m e a n δ x1=\frac{x-mean}{\delta}
  • 公式介绍:x1:最终值;x:每个特征的每个数据;mean:该特征的平均值; δ \delta :每个特征的标准差。
  • 作用域:每一个特征(也就是每一列)
  • 补充:如果出现异常点的话,由于具有一定的数据量,少量的异常点对平均值的影响不大,方差改变较小,进而x1的值影响较小。

代码片

#!/usr/local/bin/python3
# -*- coding: utf-8 -*-
# Author  : rusi_

from sklearn.preprocessing import MinMaxScaler, StandardScaler  # 归一化预处理
import numpy as np


def be_one():
    """
    归一化处理
    :return: None
    """
    test_list = [[-1, -1, 2], [2, 4, 2],[6, 6, -1]]
    mm = MinMaxScaler(feature_range=(2, 3))  # 默认为0,1的范围
    data = mm.fit_transform(test_list)
    print(data)
    return None


def stand():
    """
    标准化处理
    :return: None
    """
    std = StandardScaler()
    data = std.fit_transform([[-1, -1, 2],
                              [2, 4, 2],
                              [6, 6, -1]])
    print(data)
    return None


def transform(dem_array):
    """
    标准化算法实现
    :param dem_array: array数组
    :return: 标准化后的arry数组
    """
    # 计算每列的均值以及标准差
    mean = np.array([np.mean(dem_array[:, i]) for i in range(dem_array.shape[1])])
    scale = np.array([np.std(dem_array[:, i]) for i in range(dem_array.shape[1])])
    res_array = np.empty(shape=dem_array.shape, dtype=float)
    for col in range(dem_array.shape[1]):
        res_array[:, col] = (dem_array[:, col] - mean[col]) / scale[col]
    return res_array


if __name__ == '__main__':
    # be_one()
    # stand()
    print(transform(np.array([[-1, -1, 2],
                              [2, 4, 2],
                              [6, 6, -1]])))

发布了55 篇原创文章 · 获赞 3 · 访问量 2726

猜你喜欢

转载自blog.csdn.net/rusi__/article/details/103687780