微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

转换基元的深度特征合成深度 |功能工具

如何解决转换基元的深度特征合成深度 |功能工具

我正在尝试使用 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*f2f1+f2,但我想要更复杂的工程特征,如 f2*(f1+f2)f1+(f2+f1)。我认为增加 max_depth 会做到这一点,但显然不是。
如果有的话,我怎么能做到这一点?

解决方法

很遗憾,featuretools 并不容易支持这个用例,因为它似乎很常见。我发现最好的方法是使用 dfs 函数创建您想要的一阶特征,然后手动添加您想要的二阶特征。

例如,下面的 MWE(使用 iris 数据集)使用 AddNumeric 执行 dfs 原语,然后仅使用原始特征(和避免相同的基本特征在转换后的特征中多次出现)。

DivideNumeric

这种方法的好处是它为您提供了更细粒度的控制来自定义您想要的方式,并避免创建您不想要的不必要特征的计算成本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?