美文网首页每天AI你三千遍
数据预处理之特征归一化

数据预处理之特征归一化

作者: AI_Engine | 来源:发表于2018-09-30 11:15 被阅读116次

        请大家关注本人公众号AI Engine(I是大写的i)

        今天我们来谈谈数据处理,毕竟这是个数据为王的时代,再牛的算法如果脱离了数据的支撑,恐怕就是一个空架子毫无用处。我们的数据可以分成好多种,比如结构化数据、非结构化数据、文本数据等等,而在部分机器学习或传统算法中需要的训练或者测试数据存在特征与特征之间量纲的影响(这句话是有点绕,一会举个栗子),我们需要对特征进行归一化处理,使得不同指标之间具有可比性。

        栗子来啦~分析一个人的身高和体重对健康的影响,如果使用米( m)和千克( kg)作为单位,那么身高特征会在1.6~1.8m的数值范围内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。也就是说体重的预测能力会比身高的预测能力高出很多,但是这并不符合事实,想要得到更为准确的结果,就需要进行特征归一化( Normalization)处理,使各指标处于同一数值量级,以便进行分析。我们先上个图,这是数据处理初步总结的思维导图,还要不断完善。

        我们今天主要讲讲特征预处理的其中常用的两种方法:线性函数归一化、0均值归一化。

        线性函数归一化:将原始数据进行线性的变换,并确保新的数据均映射到[0,1]区间内,实现对原始数据的等比缩放。

        0均值归一化:将原始数据均映射到均值为0,标准差为1的分布上。具体来说,假设原始特征的均值为μ、标准差为σ,那么归一化公式定义为:

    数据特征归一化的优势是什么呢?我们借助下随机梯度下降的实例来说明归一化的重要性。假设有两种数值型特征,x1的取值范围为[0,10], x2的取值范围为[0,3],于是可以构造一个目标函数等值图。左图的梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)

    在python的sklearn库中我们可以直接使用StandardScaler 、MinMaxScaler来实现特征归一化,作为数据的预处理。下面是一个简单的实例:

    # coding=utf-8

    importsys

    reload(sys)

    sys.setdefaultencoding('utf8')

    fromsklearn.datasetsimportload_breast_cancer

    fromsklearn.model_selectionimporttrain_test_split

    fromxgboostimportXGBClassifier

    fromsklearn.preprocessingimportMinMaxScaler,StandardScaler

    cancer = load_breast_cancer()

    x_train,x_test,y_train,y_test = train_test_split(cancer.data,cancer.target,test_size=0.2,random_state=10)

    scaler = StandardScaler()

    scaler.fit(x_train)

    x_train_scaler = scaler.transform(x_train)#在 scikit-learn 中,每当模型返回数据的一种新表示时,都可以使用 transform 方法

    xgb_clf = XGBClassifier(n_estimators=6,max_depth=5,colsample_bytree=0.7,learning_rate=0.3,reg_lambda=1,seed=10,n_jobs=-1)

    xgb_clf.fit(x_train,y_train)

    print(xgb_clf.score(x_test,y_test))

    xgb_clf.fit(x_train_scaler,y_train)

    x_test_scaler = scaler.fit_transform(x_test)

    print(xgb_clf.score(x_test_scaler,y_test))

    相关文章

      网友评论

        本文标题:数据预处理之特征归一化

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