【机器学习】sklearn数据预处理(归一化标准化和缺失值处理)

包括数据归一化,标准化以及缺失值处理

1.归一化

在下图所示四个特征中, 每行组成的四个特征决定了你的label标签值,然而每个label的四个特征影响因素的大小不同,实际应用中,难以看出每个特征的有效决定程度,因此我们对每一列的特征的所有元素进行归一化处理,对每一列数据进行归一化的原因在于同一列数据属于同一种特征,能够代表多个样本(或者label)之间的差异性。

                                                     

 

具体的代码如下:

from sklearn.preprocessing import MinMaxScaler,StandardScaler,Imputer
import jieba
import numpy as np

def mm():
    '''
    归一化处理
    :return:
    '''
    mm = MinMaxScaler(feature_range=(2,3))
    data = mm.fit_transform([[90,2,10,40],
                             [60,4,15,45],
                             [75,3,13,46]])
    print(data)
    return None

if __name__=='__main__':
    mm()

 具体的输出结果如下:我们归一化的范围是(2,3)

[[3.         2.         2.         2.        ]
 [2.         3.         3.         2.83333333]
 [2.5        2.5        2.6        3.        ]]

2.标准化

归一化的一个缺陷在于如果样本中存在极大或者极小的异常值,这样归一化的结果往往准确性较低,因此我们采用标准化进行改进,标准化受样本的均值影响,由于样本量较大,均值不易受个别的异常值影响。具体在sklearn库中的实现方式如下:

def stand():
    '''
    标准化函数
    :return:
    '''
    std = StandardScaler()

    data = std.fit_transform([[1.,-1.,3.],[2.,4.,2.],[4.,6.,-1.]])
    print(data)
    return None

调用的结果如下:(标准化后的均值0,方差1)

[[-1.06904497 -1.35873244  0.98058068]
 [-0.26726124  0.33968311  0.39223227]
 [ 1.33630621  1.01904933 -1.37281295]]

3.缺失值操作

对于样本中异常的缺失值我们一般通过插值的运算进行填补(这里采用均值填补),类似于pandas库中对缺失值的操作,具体的实现方式如下:axis=0表示按列进行填补

def im():
    '''
    缺失值处理
    :return:
    '''
    im = Imputer(missing_values='NaN', strategy='mean',axis=0)
    data = im.fit_transform([[1,2],[np.nan,3],[7,6]])
    print(data)
    return None

结果如下:

[[1. 2.]
 [4. 3.]
 [7. 6.]]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值