数据预处理

代码

import numpy as np
#导入numpy库
from scipy.linalg import sqrtm
#导入矩阵开方的一个方法(非逐元素操作)
def shuffle(data):
    #打乱数据集
    index=np.arange(len(data))
    np.random.shuffle(index)
    data=data[index]
    return data
def center(data):
    #中心化
    mean=data.mean(axis=0)
    centered=data-mean
    return centered,mean
def normalize(data):
    #标准化
    std_deviation=data.std(axis=0)
    std_deviation[std_deviation==0]=1
    #如果有某一个特征标准差为0,在计算的过程中容易出错,将其改为1即对该特征不做缩放处理
    normalized=data/std_deviation
    return normalized,std_deviation
def white(data):
    #白化
    cov=np.cov(data.T)
    c=sqrtm(cov)
    c=np.linalg.pinv(c)
    whiten=data@c
    return whiten,c

图示

由下图可以看出

中心化就是移动整体数据点使得"重心"落在坐标轴原点

标准化就是使得数据大部分落在[-1,+1]这个范围内,

白化之前显然数据呈现为线性,白化之后数据变得没有规律,也就是说白化消除了特征间的联系

Figure_3.png

Figure_4.png

转载于:https://www.cnblogs.com/redo19990701/p/11479392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值