数据预处理1

数据预处理


1.1 数据预处理模块

  • 模块 preprocessing:包含数据预处理所有内容
  • Impute 填补缺失值
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
import numpy as np

1.1.1MinMaxScaler 数据归一化

  • MinMaxScaler 数据归一化Normalization是归
    一化,不是正则化,真正的正则化是regularization,不是数据预处理的一种手段。归一化之后的数据服从正态分布
  • MinMaxScaler有一个重要参数,
    feature_range,控制我们希望把数据压缩到的范围,默认是[0,1]。
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18],[0.5,19]]
data=pd.DataFrame(data)
scaler=MinMaxScaler()
scaler=scaler.fit(data)
scaler.transform(data)
array([[0.  , 0.  ],
       [0.25, 0.25],
       [0.5 , 0.5 ],
       [1.  , 1.  ]])
scaler.data_max_
array([ 1., 18.])
data
[[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler=MinMaxScaler(feature_range=[5,10])
scaler.fit_transform(data)
array([[ 5.  ,  5.  ],
       [ 6.25,  6.25],
       [ 7.5 ,  7.5 ],
       [10.  , 10.  ]])
#当X中的特征数量非常多的时候,fit会报错并表示,数据量太大了我计算不了
#此时使用partial_fit作为训练接口
#scaler = scaler.partial_fit(data)
# 使用numpy进行归一化
data
[[-1, 2], [-0.5, 6], [0, 10], [1, 18], [0.5, 19]]
data=np.array(data)
data
array([[-1. ,  2. ],
       [-0.5,  6. ],
       [ 0. , 10. ],
       [ 1. , 18. ],
       [ 0.5, 19. ]])
data.min()
-1.0
data.min(axis=0)
array([-1.,  2.])
data.max(axis=0)
array([ 1., 19.])
x_nor=(data-data.min(axis=0))/(data.max(axis=0)-data.min(axis=0))
x_nor
array([[0.        , 0.        ],
       [0.25      , 0.23529412],
       [0.5       , 0.47058824],
       [1.        , 0.94117647],
       [0.75      , 1.        ]])

preprocessing.StandardScaler 数据标准化,

  • 当数据(x)按均值(μ)中心化后,再按标准差(σ)缩放,数据就会服从为均值为0,方差为1的正态分布(即标准正态分布)
from sklearn.preprocessing import StandardScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18],[0.5,19]]
scaler=StandardScaler()
scaler.fit(data)
StandardScaler()
scaler.mean_
array([ 0., 11.])
scaler.var_
array([ 0.5, 44. ])
x_std=scaler.transform(data)
x_std.mean()
-8.881784197001253e-17
x_std.std()
0.9999999999999999
data
[[-1, 2], [-0.5, 6], [0, 10], [1, 18], [0.5, 19]]
scaler.fit_transform(data)
array([[-1.41421356, -1.35680105],
       [-0.70710678, -0.75377836],
       [ 0.        , -0.15075567],
       [ 1.41421356,  1.05528971],
       [ 0.70710678,  1.20604538]])
scaler.inverse_transform(x_std) 
array([[-1. ,  2. ],
       [-0.5,  6. ],
       [ 0. , 10. ],
       [ 1. , 18. ],
       [ 0.5, 19. ]])

对于StandardScaler和MinMaxScaler来说,空值NaN会被当做是缺失值,在fit的时候忽略,在transform的时候
保持缺失NaN的状态显示。并且,尽管去量纲化过程不是具体的算法,但在fit接口中,依然只允许导入至少二维数
组,一维数组导入会报错。通常来说,我们输入的X会是我们的特征矩阵,现实案例中特征矩阵不太可能是一维所
以不会存在这个问题。

``

  • 菜菜的sklearn学习得到 https://live.bilibili.com/12582510
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值