zoukankan      html  css  js  c++  java
  • 机器学习实战——特征工程之特征构建

    特征构建是指通过研究原始数据样本,结合机器学习实战经验和相关领域的专业知识,思考问题的潜在形式和数据结构,人工创造出新的特征,而这些特征对于模型训练又是有益的并且具有一定的工程意义。

    特征构建的方式主要有单列操作、多列操作、 分组/聚合操作这三种。

    1. 单列操作

    在pandas库中,主要利用map()函数进行单列的操作。

    map()函数是将目标函数作用于一个Series的每一个元素,而DataFrame的一列就是一个Series, 因此可通过map()来对一列进行四则运算、平方、开方、幂方、指数、对数等操作。

    train['DIV_column_i'] = train['column_i'].map(lambda x: x/1024)
    train['X2_column_i'] = train['column_i'].map(lambda x: x**2)
    train['EXP_column_i'] = train['column_i'].map(lambda x: math.exp(x))

    2. 多列操作

    在pandas库中,主要利用apply()函数进行多列的操作。

    apply()函数是将目标函数作用于一个DataFrame的一行(列)或多行(列),当参数axis=1即为对列操作,因此可通过apply()实现多列求和/求差/求平均、求几列的最大值/最小值等操作。

    train['SUM_column'] = train.apply(lambda x: x['column_1']+x['column_2']+x['column_3'], axis=1)
    train['DIFF_column'] = train.apply(lambda x: x['column_1']-x['column_2'], axis=1)
    train['MEAN_column'] = train.apply(lambda x: (x['column_1']+x['column_2'])/2.0, axis=1)
    train['MAX_column'] = train.apply(lambda x: max(x['column_1'],x['column_2'],x['column_3']), axis=1)
    train['MIN_column'] = train.apply(lambda x: min(x['column_1'],x['column_2'],x['column_3']), axis=1)
    

    3. 分组/聚合操作

    在pandas库中,主要利用groupby()函数进行分组/聚合操作。

    前两种操作主要用于一个ID只出现一次的情况,而当题目中一个ID不止出现一次,或者需要按某些属性(如时间段)统计的时候,就需要进行分组/聚合操作。

    # 按'gender'的值分组,并统计个数
    grouped1 = train.groupby(['gender']).size()  
    # 按'age','gender'两列属性分组,并统计个数
    grouped2 = train.groupby(['age','gender']).size()
    # 按属性'gender'分组,并求列'age'的均值
    grouped3 = train['age'].astype(float).groupby(train['gender']).mean()   
    # 按'gender','age'属性分组,并求列'fee'的最大值
    grouped4 = train['fee'].astype(float).groupby([train['gender'],train['age']]).max() 
  • 相关阅读:
    python-字典
    C#公历转农历算法
    GridView控件显示图片
    SQLite DBHelp
    面向服务体系结构:适用于敏捷的系统
    针对 .NET 框架的安全编码指南
    Microsoft .NET Pet Shop 4
    C#.NET数据库访问类DBHelper
    Emgu CV 高斯建模
    .NET代码编写规范 整理
  • 原文地址:https://www.cnblogs.com/yucen/p/9912061.html
Copyright © 2011-2022 走看看