机器学习-------特征工程(二)

特征预处理:

通过特定的统计方法(数学方法)数据转换成算法要求的数据

API:  sklearn. preprocessing

数值型数据:标准缩放:

               1、归一化

               2、标准化

               3、缺失值

类别型数据:one-hot编码

时间类型:时间的切分

 

归一化:

    特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间

公式:

𝑋^′= (𝑥−𝑚𝑖𝑛)/(𝑚𝑎𝑥−𝑚𝑖𝑛)

归一化API:  sklearn.preprocessing.MinMaxScaler

语法:

                  MinMaxScalar(feature_range=(0,1))

                  每个特征缩放到给定范围 ( 默认 [0,1])
MinMaxScalar. fit_transform(X)      
 X:numpy array 格式 的数据 [ n_samples,n_features ]
 返回值:转换后的形状相同的 array


归一化步骤:

   1、实例化MinMaxScalar

   2、通过fit_transform转换

代码:

from sklearn.preprocessing import MinMaxScaler


def minmax():
    """归一化"""
    min = MinMaxScaler()
    data = min.fit_transform([[90, 2, 10, 40],
                        [60, 4, 15, 45],
                        [75, 3, 13, 46]])

    print(data)


if __name__ == '__main__':
    minmax()

运行结果:

各个特征具有同等的重要性:进行归一化

总结:

最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景

 

标准化:

1、特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内

API:  scikit-learn.preprocessing.StandardScaler

语法:

                                  StandardScaler()

                                 处理之后每列来说所有数据都聚集在 均值 0 附近方差为 1
                 StandardScaler. fit_transform(X,y)      
                X:numpy array 格式 的数据 [ n_samples,n_features ]
               返回值:转换后的形状相同的 array
StandardScaler.mean_
              原始数据中每列特征的平均值
         StandardScaler.std_
              原始数据每列特征的方差

步骤:

1、实例化StandardScaler

2、通过fit_transform转换

代码:

from sklearn.preprocessing import MinMaxScaler, StandardScaler


def stand():
    """标准化"""
    sta = StandardScaler()
    data = sta.fit_transform([[1., -1., 3.],
                        [2., 4., 2.],
                        [4., 6., -1.]])
    print(data)


if __name__ == '__main__':
    stand()

运行结果:

总结 :

在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

 

缺失值:

删除

如果每列或者行数据缺失值达到一定的比例,建议放弃整行或者整列,不建议

插补

可以通过缺失值每行或者每列的平均值、中位数来填充,一般来说是按列填补

API:sklearn.preprocessing.Imputer

缺失值格式:np.nan(如果不是进行替换)

语法:

missing_values='NaN':缺失值位置,一般就是固定写法

 strategy='mean': 填补策略,默认

axis=0: 填补行还是列

Imputer( missing_values='NaN' strategy='mean' axis=0 )
完成缺失值插补
Imputer . fit_transform ( X,y )      
X:numpy array 格式 的数据 [ n_samples,n_features ]
返回值:转换后的形状相同的 array
 
代码:
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Imputer


def im():
    """缺失值"""
    # 0 :列
    # 1 :行
    im = Imputer(missing_values='NaN',strategy='mean',axis=0)
    data = im.fit_transform([[1, 2],
                            [np.nan, 3],
                            [7, 6]])
    print(data)


if __name__ == '__main__':
    im()

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值