机器学习——数据预处理

        在机器学习中,有一些经典的数据,例如Iris数据集、波士顿房价数据集等;然而在现实生活中很少有十分整洁的数据集,所以我们要学习如何处理数据,也就是数据的预处理。

数据标准化

标准化是指将数据缩放为零均值和单位的过程,我们可以 通过从每个数据点中减去平均值(μ) 的所有数据,并将其除以方差 (σ) 的数据;也就是说,对于每个功能𝑥我们 将计算(x−μ)/σ。

from sklearn import processing
import numpy as np
X = np.array([[ 1., -2.,  2.],
              [ 3.,  0.,  0.],
              [ 0.,  1., -1.]])
X_scaled = preprocessing.scale(X)
X_scaled

#array([[-0.26726124, -1.33630621,  1.33630621],
       [ 1.33630621,  0.26726124, -0.26726124],
       [-1.06904497,  1.06904497, -1.06904497]])

 标准化的:零平均值,单位方差

X_scaled.mean(axis = 0)

#array([7.40148683e-17, 0.00000000e+00, 0.00000000e+00])
X_scaled.std(axis = 0)

#array([1., 1., 1.])

 数据归一化

与标准化类似,归一化是将单个样本缩放到有单位规范。

L1 范数(或曼哈顿距离)

X_normalized_l1 = preprocessing.normalize(X, norm='l1')
X_normalized_l1
#array([[ 0.2, -0.4,  0.4],
       [ 1. ,  0. ,  0. ],
       [ 0. ,  0.5, -0.5]])

L2 范数(或欧几里得距离)

X_normalized_l2 = preprocessing.normalize(X, norm='l2')
X_normalized_l2
#array([[ 0.33333333, -0.66666667,  0.66666667],
       [ 1.        ,  0.        ,  0.        ],
       [ 0.        ,  0.70710678, -0.70710678]])

二值化

我们有时候不太关心额外的数据,我们只关心某个特征是否存在,可以使用二值化来实现数据

binarizer = preprocessing.Binarizer(threshold=0.5)
X_binarized = binarizer.transform(X)
X_binarized
#array([[1., 0., 1.],
       [1., 0., 0.],
       [0., 1., 0.]])
#默认数据中大于等于1的数据为1

处理缺失的数据

from numpy import nan
X = np.array([[ nan, 0,   3  ],
              [ 2,   9,  -8  ],
              [ 1,   nan, 1  ],
              [ 5,   2,   4  ],
              [ 7,   6,  -3  ]])
#nan为缺失的数据

 我们有以下三个方法来处理缺失值

 mean:将所有 nan 值替换为沿指定轴的平均值 矩阵(默认值: axis = 0)。

median:沿指定轴将所有 nan 值替换为中值 矩阵(默认值:axis = 0)。

most_frequent:将所有 nan 值替换为沿 a 的最频繁的值 矩阵的指定轴(默认值:axis = 0)。

降维

维度的诅咒:填充可用空间所需的数据点数量随着维度数量的增加呈指数级增长。

这意味着给定样本大小有一个最大特征数,超过这个数量,分类器地性能不是提升而是降低

这就是我们需要降维的原因。

最常见的降维技术有PCA(Principal Component Analysis,主成分分析)

主成分分析的直观理解,可以认为是旋转坐标轴,使得在旋转坐标轴后这些点在新的坐标系下在各个坐标轴(变量)方向投影的方差变大。其中如果在某坐标上的方差最大,那么这个坐标轴对应的这些散点的坐标就是第一主成分,其次就是第二主成分,依此类推。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值