Featuretools 如何将深度特征合成应用于单个表

Featuretools 如何将深度特征合成应用于单个表,featuretools,Featuretools,经过处理后,我的数据是一个表,其中有几列是特征,一列是标签。我想使用featuretools.dfs来帮助我预测标签。是否可以直接执行,还是需要将单个表拆分为多个 可以在单个表上运行DFS。例如,如果您有一个带有索引的熊猫数据帧df“index”,您将编写: 将功能工具作为ft导入 es=ft.EntitySet(‘事务’) es.实体_来自_数据帧(数据帧=df, 实体_id='log', index='index') fm,features=ft.dfs(entityset=es, 目标_e

经过处理后,我的数据是一个表,其中有几列是特征,一列是标签。我想使用
featuretools.dfs
来帮助我预测标签。是否可以直接执行,还是需要将单个表拆分为多个

可以在单个表上运行DFS。例如,如果您有一个带有索引的熊猫数据帧
df
“index”,您将编写:

将功能工具作为ft导入
es=ft.EntitySet(‘事务’)
es.实体_来自_数据帧(数据帧=df,
实体_id='log',
index='index')
fm,features=ft.dfs(entityset=es,
目标_entity='log',
trans_原语=['day','weekday','month'])
生成的特征矩阵如下所示

[1]中的
:fm
出[1]:
销售地点平日(日期)月(日期)日(日期)
指数
1大街3 4 12 29
2大街4 5 12 30
3大街5 6 12 31
阿灵顿大道4号18 01
阿灵顿大道5号12
这将对数据应用“转换”原语。为了使用聚合原语,通常需要添加更多的实体以提供
ft.dfs
。你可以读到我们之间的差异

一个标准的工作流程是通过一个有趣的分类来定义您的单个实体。如果您的
df
是单个表

| index | location       | pies sold |   date |
|-------+----------------+-------+------------|
|     1 | main street    |     3 | 2017-12-29 |
|     2 | main street    |     4 | 2017-12-30 |
|     3 | main street    |     5 | 2017-12-31 |
|     4 | arlington ave. |    18 | 2018-01-01 |
|     5 | arlington ave. |     1 | 2018-01-02 |
您可能对通过
位置进行规范化感兴趣

es.规范化实体(基本实体\u id='log',
新实体id='locations',
索引(位置)
您的新实体
位置
将具有该表

| location       | first_log_time |
|----------------+----------------|
| main street    |     2018-12-29 |
| arlington ave. |     2000-01-01 |
这将使像
locations.SUM(log.pies selled)
locations.MEAN(log.pies selled)
这样的功能按位置添加或平均所有值。您可以在下面的示例中看到创建的这些功能

[1]中的
:将熊猫作为pd导入
…:将功能工具作为ft导入
…:df=pd.DataFrame({'index':[1,2,3,4,5],
…:“地点”:[“主街”,
…:“主街”,
…:“主街”,
…:“阿灵顿大道”,
…:“阿灵顿大道”。],
…:‘卖馅饼’:[3,4,5,18,1]})
…:df['date']=pd.日期范围('2017年12月29日',期间=5,频率=D')
…:df
...: 
出[1]:
索引位置馅饼出售日期
0 1主街3 2017-12-29
1 2主街4 2017-12-30
2 3大街5 2017-12-31
2018-01-01阿灵顿大道18号3-4号
2018-01-02阿灵顿大道1号4 5号
在[2]中:es=ft.EntitySet(‘事务’)
…:es.entity_from_dataframe(dataframe=df,entity_id='log',index='index',t
…:ime_index='date')
…:es.规范化实体(基本实体\u id='log',新实体\u id='locations',ind
…:ex='location')
...: 
出[2]:
Entityset:事务
实体:
日志[行:5,列:4]
位置[行:2,列:2]
关系:
log.location->locations.location
在[3]:fm中,features=ft.dfs(entityset=es,
…:target_entity='log',
…:agg_原语=['sum','mean'],
…:trans_原语=['day'])
…:fm
...: 
出[3]:
地点卖馅饼日(日期)地点。日(首次登录时间)地点。平均(log.pies售出)地点。总和(log.pies售出)
指数
1大街3 29 29 4.0 12
2大街430294.012
3大街5 31 29 4.0 12
阿灵顿大道4号18 1 9.5 19
阿灵顿大道5号1 2 1 9.5 19

如果答案解决了您的问题,请接受它(请参阅)