首页 > 其他 > 详细

数据预处理

时间:2019-09-07 10:26:29      阅读:84      评论:0      收藏:0      [点我收藏+]

代码

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]这个范围内,

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

技术分享图片

技术分享图片

数据预处理

原文:https://www.cnblogs.com/redo19990701/p/11479392.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!