问题标签 [featuretools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - Featuretools 深度特征合成 (DFS) 开销极高
从一个非常小的数据帧(<1k 行)中提取日月和年的时间序列ft.dfs(...)
和在某些时间序列上的执行大约需要 800 毫秒。ft.calculate_feature_matrix(...)
当我根本不计算任何特征时,它仍然需要大约 750 毫秒。是什么导致了这种开销,我该如何减少它?
我已经测试了不同的功能组合,并在一堆小数据帧上进行了测试,执行时间非常稳定,在 700-800 毫秒之间。
我还在超过 100 万行的更大数据帧上对其进行了测试。没有任何实际特征(原语)的执行时间与所有日期特征在 80-90 秒左右的执行时间相当。所以看起来计算时间取决于行数而不是特征?
我正在运行 n_jobs=1 以避免并行性的任何怪异。在我看来,featuretools 每次都在为 dask 后端进行一些配置或设置,这导致了所有开销。
实际输出似乎是正确的,我很惊讶 FeatureTools 需要 800 毫秒才能在一个小数据帧上计算任何内容。解决方案是否只是为了避免小数据帧并在大数据帧上使用自定义原语计算所有内容以减轻开销?或者是否有更聪明/更正确的方式来使用ft.dfs(...)
or ft.compute_feature_matrix
。
featuretools - 在 Featuretools 中更改自上次基元以来的时间单位
使用time_since_last
原语时,如何将单位从秒(默认)更改为天?
我在文档中看到 TimeSinceLast 对象接受单位参数,但在使用dfs
or时我看不到传递它的简单方法calculate_feature_matrix
。
featuretools - 内置聚合和转换原语列表
首先,我喜欢功能工具。它使我的工作变得更加轻松和高效。一个简单的问题:我只是在寻找非自定义 agg 和 trans 原语的完整列表,但似乎找不到。我是否只获取 API 中的方法列表并用小写字母(和之间的下划线)替换大写字母?
featuretools - 为 ML 管道实现特征存储
关于 ML 管道中的特征存储有很多讨论。典型的用例是不同科学家在不同模型上工作的特征的可用性。特征工具是否支持特征存储概念?
featuretools - 您如何在 Featuretools 中实现加权和变换原语?
我试图弄清楚如何为 Featuretools 实现加权和求和原语。权重应取决于 time_since_last 像
cum_sum (amount) = sum_{i} exp( -a_{i} ) * amount_{i}
i
滚动 6 个月的周期在哪里......
在上面你找到原始问题。经过一段时间的尝试和错误,我想出了这个代码来达到我的目的:
从这里使用实体和关系的数据和初始设置
当我在上面做时,我接近了我想要的功能,但最后我没有做对,我不明白。所以我得到了功能
总和(贷款。WEIGHT_TIME_UNTIL(贷款开始))
但不是
SUM(loans.loan_amount * loan.WEIGHT_TIME_UNTIL(loan_start))
我在这里错过了什么???
我进一步尝试......
我的猜测是类型错过匹配!但“类型”是相同的。无论如何,我尝试了以下方法:
1) es["loans"].convert_variable_type("loan_amount",ft.variable_types.Numeric) 2) 贷款["loan_amount_"] = 贷款["loan_amount"]*1.0
对于 (1) 以及 (2),我得到了更有希望的结果功能:
贷款金额_ * WEIGHT_TIME_UNTIL(贷款开始)
并且
贷款金额 * WEIGHT_TIME_UNTIL(贷款开始)
但只有当我有目标价值 = 贷款而不是客户时,这实际上不是我的意图。
python - trans_primitives 不会生成到 datetime 列
我正在创建一个特征工具矩阵,它由 5 个数据框实体和一个 cutoff_time 表生成。当我使用 ft.dfs() 函数时,我同时使用agg_primitives和trans_primitives,但是 trans_primitives 中与日期时间列相关的所有原语都不会生成任何特征。
包含日期时间列的实体称为“事件”。该列的名称是“事件时间戳”。
由于我的 trans_primitives 列表包括其他生成特征的原语(“IS_NULL”有效),我认为问题不在于我如何使用整个 trans_primitives,而只是那些与时间相关的原语。
一些可能有帮助的事情:
我检查了'events'中'event-timestamp'列的dtype,它是datetime64 [ns]。截止表中的“截止时间”列也是如此。
另一个细节是 'event-timestamp' 的一些新功能是由agg_primitives生成的(例如 'MIN(matcher.devices.TIME_SINCE_LAST(events.event-timestamp))'),所以我猜它表明该列本身是好的。
我对“事件”的 es.entity_from_dataframe 做了一些实验:
- 使用了参数:time_index='event-timestamp'
- 使用了参数:variable_types={'event-timestamp': vtypes.Datetime}
- 以上两个都用过,一个都不用
以下是我正在使用的功能:
实体关系如下所示:
以及生成的特征列表:
我希望从上面的所有trans_primitives 列表中获得新功能。
python - 您如何使用 MultiplyNumeric 将日期转换为同一表的权重和值?
我的主要目标是考虑更高价值的最新信息的功能。
因此,想法是通过新的原始转换“WeightTimeUntil”计算加权因子,然后转换原始“MultiplyNumeric”可以使用该加权因子来获得加权值。
我使用 Will Koehrsen 的演练演练作为数据和实体设置的起点。
因此我遇到了以下问题:
- featuretools 没有选择我想要实现的组合(见下文)
- 看起来 featuretools 没有选择组合,因为类型不匹配?!
- 通过更改我想要乘以权重因子的值的类型,我设法获得了正确的组合,但不是正确的目标
- 对于目标平等的客户,功能工具根本没有选择我想要得到的组合。只有当我使用日期和值是列的目标相等贷款时,特征工具才使用正确的组合
这是“WeightTimeUntil”原语的代码
这是DFS执行代码:
这里是功能列表:
我期待这样的事情:
python - df.groupby('A').agg('min') 如何转换为特征工具?
假设我有这个简单的代码片段。我将对数据框进行分组、聚合和合并:
使用熊猫:
数据
东风:分组和聚合
df_result:合并
df_new:使用功能工具的尝试:
特征矩阵:
Pandas 的操作如何转化为功能工具(最好不添加另一个表)?
我对 featuretools 的尝试没有给出正确的输出,但我相信我使用的过程有些正确。
featuretools - 您如何使用特征工具检测或控制变量的危险使用及其转换?
当您在购买日期应用转换年、月或日时,您很容易遇到问题!
假设您购买的是 2018 年,但您想在 2019 年的数据上应用模型。模型是使用特征工具自动生成的特征开发的,包括像年份这样的简单转换。
这里的问题是模型不知道2019!?这意味着该模型不适用于新数据。
featuretools - 您如何搜索特定功能?
最后,当我尝试使用 featuretools 时,我正在寻找我所期待的特定功能。当您拥有 > 30 个功能时,查找该功能会非常耗时。
feature_names 对象(dfs 方法的第二个返回对象)是否有搜索某些文本模式(正则表达式)的方法?
feature_names 是“featuretools.feature_base.feature_base.IdentityFeature”的列表
Post Scriptum:在 API 的 featuretools 文档中没有描述返回对象