如何解决转换基元的深度特征合成深度 |功能工具
我正在尝试使用 featuretools 库在一个简单的数据集上创建新功能,但是,每当我尝试使用更大的 max_depth
时,都没有任何反应......这是我目前的代码:
# imports
import featuretools as ft
# creating the EntitySet
es = ft.EntitySet()
es.entity_from_dataframe(entity_id='data',dataframe=data,make_index=True,index='index')
# Run deep feature synthesis with transformation primitives
feature_matrix,feature_defs = ft.dfs(entityset=es,target_entity='data',max_depth=3,trans_primitives=['add_numeric','multiply_numeric'])
当我查看创建的特征时,我得到了基本的东西 f1*f2
和 f1+f2
,但我想要更复杂的工程特征,如 f2*(f1+f2)
或 f1+(f2+f1)
。我认为增加 max_depth
会做到这一点,但显然不是。
如果有的话,我怎么能做到这一点?
解决方法
很遗憾,featuretools
并不容易支持这个用例,因为它似乎很常见。我发现最好的方法是使用 dfs
函数创建您想要的一阶特征,然后手动添加您想要的二阶特征。
例如,下面的 MWE(使用 iris 数据集)使用 AddNumeric
执行 dfs
原语,然后仅使用原始特征(和避免相同的基本特征在转换后的特征中多次出现)。
DivideNumeric
这种方法的好处是它为您提供了更细粒度的控制来自定义您想要的方式,并避免创建您不想要的不必要特征的计算成本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。