zoukankan      html  css  js  c++  java
  • 机器学习笔记之数据预处理(Python实现)

     0x00 概述

    机器学习在训练模型前,需要将特征进行预处理使其规范化,易于,本文主要讲几种常见的数据预处理方式;

    0x01 标准化(z-Score)

    公式为(X-mean)/std,将特征转化为均值为0,方差为1的数据;

    可以用`sklearn.prepocessing.scale()``函数和sklearn.proprocessing.StandardScaler()类实现,使用StandardScaler()可以使测试集合训练集使用相同的参数进行转换

    0x02 最小最大规范化

    通过(x-min)/(max-min)将数据转化到[0-1]之间,通过sklearn.proprocessing.MinMaxScaler()转化

    0x03 归一化

    基于参数或者距离的模型都要进行特征归一化;通过L1 norm或L2norm将值映射到[0-1]之间,使用sklearn.proprocessing.normalize(x, norm=' ')转化,如果norm选L2,则特征值的平方和加起来等于1,选L1,是特征值的绝对值之和等于1;

    概率模型(例如决策树)不需要归一化,因为他们不关心变量的值,只是关心变量分布和变量之间的条件概率;

    0x04 二值化

    给定阈值,将特征转化为0或1,使用sklearn.preprocessing.Binarizer(threshold= )进行转化;

    0x05 标签二值化

    将标称型数值转化为0、1...等数值型,输入为1-D array,可以对字符串进行编码,可以用sklearn.preprocessing.Binarizer()进行转化,作用等于labelEncoder之后OneHotEncoder,但因为只接受一维输入,只能一次对一个特征进行转化;

    0x06 标签编码(定量特征)

    对不连续的数值或文本进行编号,转化成连续的数值型变量,输入为1-D array,使用sklearn.preprocessing.LabelEncoder进行转化,

    0x07 类别特征编码(定性特征)

    对类别特征进行one-hot编码,特征就多少个值就新增多少个维度来表示;使用sklearn.preprocessing.OneHotEncoder()进行转换,它接收2-D array的输入,不能直接对字符串进行转化,

    如果是字符串类型的话,需要经过LabelEncoder()转化为数值型,再经过OneHotEncoder()进行独热编码;

    也可以使用pandas.get_dummies() 进行转化,它可以接受字符串类型的输入,转化后比OneHotEncoder少一维度;但是get_dummies()因为没有transform函数,所以当测试集中出现测试集中未出现的特征值会报错;

    但是当类别特征很多时,独热编码会使特征空间变得非常大,这时可以结合PCA进行降维;

  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/JetpropelledSnake/p/14186838.html
Copyright © 2011-2022 走看看