1、增加特征表达能力,提升模型效果。
2、可以融入业务上的理解设计特征,增加模型的可解释性。
转换方式:
1、数值类型:加减乘除等运算、排序编码、多个列统计。
2、字符串类型:
3、日期类型:日期间隔、月份、周几、小时数。
分组聚合方式:计数、求最大值、最小值、平均值、求和、方差、均差、绝对值自定义函数。
#
import numpy as np
df['c'] = np.sum(df[['a', 'b']], axis=1)
# 其他聚合函数
# np.var()
# np.max()
# np.min()
# np.abs()
使用决策树创造新特征
介绍:Featuretools是执行自动化特征工程的框架。它擅长将时间和关系数据集转换为用于机器学习的特征矩阵, 把常见的特征工程方法进行了自动化封装,即所谓的dfs(深度特征合成).
实体:即一张表或者是一个dataframe,多张表的集合叫做实体集。一个实体可以看作是一个pandas的数据框表示,多个实体的集合称为实体集合。
关系:表之间的关联键的定义。
算子:指的是一些特征工程的函数。
原理:DFS(一种特征工程方法,支持从单个或者多个数据框中构造新特征, 把常见的特征工程方法进行了自动化封装。)通过将特征算子应用于Entityset的实体关系来构建新特征。
安装:
pip install featuretools -i https://mirror.baidu.com/pypi/simple
导入数据集:
data :相当于有三个数据表,包括客户、会话、事务表。
import featuretools as ft
data = ft.demo.load_mock_customer()
customers_df = data["customers"]
customers_df
输出:

sessions_df = data["sessions"]
sessions_df.sample(5)
输出:

transactions_df = data["transactions"]
transactions_df.sample(5)
输出:

# 指定字典,包含数据集中所有数据表的字典,数据表与其索引列和时间索引列一起传入。
dataframes = {
"customers" : (customers_df, "customer_id"),
"sessions" : (sessions_df, "session_id", "session_start"),
"transactions" : (transactions_df, "transaction_id", "transaction_time")
}
# 指定数据表之间的关系
# 当两个数据帧具有一对多关系时,我们将“一个”数据帧称为“父数据帧”。父项和子项之间的关系定义如下:
# (parent_dataframe, parent_column, child_dataframe, child_column)
# 创建数据表之间的关联
relationships = [("sessions", "session_id", "transactions", "session_id"),
("customers", "customer_id", "sessions", "customer_id")]
# 使用深度特征合成构建特征。
# 设置主实体为customers
feature_matrix_customers, features_defs = ft.dfs(
dataframes=dataframes,
relationships=relationships,
target_dataframe_name="customers",
)
feature_matrix_customers
输出:

参考文章:
FeatureTools官方文档.
featuretools完全指南.
featuretools入门尝试.
机器学习实战 | 自动化特征工程工具Featuretools应用.