在 featuretools 1.0.0 中将 cutoff_time 传递给 dfs 的正确方法
Posted
技术标签:
【中文标题】在 featuretools 1.0.0 中将 cutoff_time 传递给 dfs 的正确方法【英文标题】:Proper way to pass cutoff_time to dfs in featuretools 1.0.0 【发布时间】:2021-12-14 11:27:29 【问题描述】:最近我将功能工具更新到 v1.0.0 并遇到以下问题。我有随时间变化的实例,我想为它们构建时间相关的功能。此外,我想保存这些实例的一些历史特征。所以我的截止时间数据集由以下列组成:时间、instance_id 和 feature1、feature2、...、target
当我尝试运行 dfs 时,我收到了错误 'NoneType' object has no attribute 'logical_types'
我发现是内部函数get_ww_types_from_features
引起的
它尝试获取截止时间df的列类型,假设它具有木制品类型
cutoff_schema = cutoff_time.ww.schema
for column in pass_columns:
logical_types[column] = cutoff_schema.logical_types[column]
semantic_tags[column] = cutoff_schema.semantic_tags[column]
origins[column] = "base"
但最初截止时间是pandas DataFrame,我没有在代码中找到它被翻译成木制品的地方。并且在文档中还说可以将截止时间作为 pandas DataFrame 传递
因此,我的问题是:传递截止时间 DataFrame 的正确方法是什么(如果是 pandas,那么代码中的错误在哪里?)(或者如果没有错误,那么我应该将截止时间转换为在 dfs 之前在代码中手动工作?)
【问题讨论】:
【参考方案1】:在为 cutoff_time
使用具有附加列(例如标签)的数据框并通过 n_jobs
或 dask_kwargs
选项使用多个工作人员时,Featuretools 1.0.0 中存在错误。这可能是您遇到的问题。此错误已在 Featuretools 1.1.0 中修复
pandas df 意味着在 1.0.0 中被 cutoff_time
接受
【讨论】:
【参考方案2】:cutoff_times = pd.DataFrame()
cutoff_times['customer_id'] = [1, 2, 3, 1]
cutoff_times['time'] = pd.to_datetime(['2014-1-1 04:00',
'2014-1-1 05:00',
'2014-1-1 06:00',
'2014-1-1 08:00'])
cutoff_times['label'] = [True, True, False, True]
cutoff_times
fm, features = ft.dfs(entityset=es,`enter code here`
target_dataframe_name='customers',
cutoff_time=cutoff_times,
cutoff_time_in_index=True)
fm
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 我的做法完全相同,但在我的情况下不起作用它在 0.0.24 中起作用,但现在不起作用 我认为技术版本在这里起着重要作用。以上是关于在 featuretools 1.0.0 中将 cutoff_time 传递给 dfs 的正确方法的主要内容,如果未能解决你的问题,请参考以下文章