美文网首页
实战-数据处理

实战-数据处理

作者: 程南swimming | 来源:发表于2020-08-11 15:15 被阅读0次

    https://www.cnblogs.com/chaosimple/p/4153167.html

    数据处理的方式

    • preprocessing.scale
      公式为:(X-mean)/std 计算时对每个属性/每列分别进行。将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
    1. 使用sklearn.preprocessing.scale()函数
    2. 使用sklearn.preprocessing.StandardScaler类,使用该类的好处在于可以保存训练集中的参数(均值、方差)直接使用其对象转换测试集数据。
    X_scaled = preprocessing.scale(X)
    scaler = preprocessing.StandardScaler().fit(X)
    >>>#可以直接使用训练集对测试集数据进行转换
    >>> scaler.transform([[-1.,  1., 0.]])  
    
    • 归一化
      另一种常用的方法是将属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现。
      使用这种方法的目的包括:
      1、对于方差非常小的属性可以增强其稳定性。
      2、维持稀疏矩阵中为0的条目。
    >>> min_max_scaler = preprocessing.MinMaxScaler()
    >>> X_train_minmax = min_max_scaler.fit_transform(X_train)
    x=(x-min)/(max-min)
    
    • 正则化
      Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。
    X_normalized = preprocessing.normalize(X, norm='l2')
    

    独热编码

    可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征(如成绩这个特征有好,中,差变成one-hot就是100, 010, 001)。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。

    1. 实现方法一:pandas之get_dummies方法
    pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False
    data : array-like, Series, or DataFrame 输入的数据
    prefix : string, list of strings, or dict of strings, default None 
    get_dummies转换后,列名的前缀 
    *columns : list-like, default None 指定需要实现类别转换的列名
    dummy_na : bool, default False 增加一列表示空缺值,如果False就忽略空缺值
    drop_first : bool, default False 获得k中的k-1个类别值,去除第一个
    
    1. 实现方法二:sklearn
    from sklearn import preprocessing
    enc = preprocessing.OneHotEncoder()
    enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])    # fit来学习编码
    enc.transform([[0, 1, 3]]).toarray()    # 进行编码
    

    优点:独热编码解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。
    缺点:当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。

    问题

    1:怎么理解独热编码
    解决类别型数据的离散值问题。Tree Model不太需要one-hot编码: 对于决策树来说,one-hot的本质是增加树的深度。总的来说,要是one hot encoding的类别数目不太多,建议优先考虑
    2:数据为什么要标准化?一定要标准化么?
    需要: 基于参数的模型或基于距离的模型,都是要进行特征的归一化。
    不需要:基于树的方法是不需要进行特征的归一化,例如随机森林,bagging 和 boosting等。

    相关文章

      网友评论

          本文标题:实战-数据处理

          本文链接:https://www.haomeiwen.com/subject/ntmedktx.html