数据标准化(Normalization)常用的6种方法python实现

import numpy as np
import math

class DataNorm:
    def __init__(self):
        self.arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        self.x_max = max(self.arr)
        self.x_min = min(self.arr)
        self.x_mean = sum(self.arr) / len(self.arr)
        self.x_std = np.std(self.arr) #标准差
    
    #1. Min-Max标准化
    def Min_Max(self):
        arr_ = list()
        for x in self.arr:
            arr_.append(round((x - self.x_min) / (self.x_max - self.x_min), 4))
        print("经过Min_Max标准化后的数据为:\n{}".format(arr_))
    
    #2. Z-Score标准化,Standard Score,基于原始数据的均值和标准差。
    def Z_Score(self):
        arr_ = list()
        for x in self.arr:
            arr_.append(round(((x - self.x_mean) / self.x_std), 4))
        print("经过Z_Score标准化后的数据为:\n{}".format(arr_))
      
    #3. 小数定标标准化,通过移动小数点的位置来进行数据的标准化。小数点移动的位数取决于原始数据中的最大绝对值。
    def DecimalScaling(self):
        arr_ = list()
        j 
### 常用数据标准化方法 在机器学习的数据预处理阶段,数据标准化是一个重要的步骤。这有助于提高模型性能和收敛速度。以下是几种常用数据标准化方法: #### 1. Min-Max 标准化 (Min-Max Scaling) 这种方法将原始数据线性变换到指定范围,默认通常是 \([0, 1]\) 范围内。对于给定的样本 \(X\) 和最小最大值分别为 \(min(X)\), \(max(X)\),则经过 min-max scaling 后的新数值计算方式如下所示[^2]: \[ X_{new} = \frac{X - min(X)} {max(X)-min(X)}\] 此过程可以通过 `sklearn.preprocessing.MinMaxScaler` 实现。 ```python from sklearn.preprocessing import MinMaxScaler import numpy as np data = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]]) scaler = MinMaxScaler() scaled_data = scaler.fit_transform(data) print(scaled_data) ``` #### 2. Z-Score 标准化 (Standardization or Z-score normalization) Z-Score 是另一种广泛使用的标准化技术,它假设输入特征服从正态分布。该方法会把各维度都转化为均值为零、标准差为一的形式。如果随机变量 \(X\) 的平均数为 \(\mu_X\) 并且方差为 \(\sigma_X^2\) ,那么其对应的 z 得分定义为: \[z=\frac{x-\mu}{\sigma}\] 可以利用 `sklearn.preprocessing.StandardScaler` 来执行这种类型的缩放操作。 ```python from sklearn.preprocessing import StandardScaler data = [[0, 0], [0, 0], [1, 1], [1, 1]] scaler = StandardScaler().fit(data) rescaledData = scaler.transform(data) print(rescaledData) ``` #### 3. Robust Scaler Robust Scaler 使用统计量中位数和四分位距(IQR),而不是均值和标准偏差来进行尺度调整。这种方式更能抵抗异常值的影响。通过 `sklearn.preprocessing.RobustScaler` 可以轻松应用 robust scaling。 ```python from sklearn.preprocessing import RobustScaler data = [[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]] robust_scaler = RobustScaler() transformed_data = robust_scaler.fit_transform(data) print(transformed_data) ``` 这些标准化方法的选择取决于具体的业务场景以及所选用的学习算法特性。例如,在距离度量敏感的情况下,推荐采用 Z-Score 或者 Min-Max;而在存在较多离群点的情形下,则更适合考虑 Robust Scaler[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值