首页 > 解决方案 > 在 featuretools 1.0.0 中将 cutoff_time 传递给 dfs 的正确方法

问题描述

最近我将 featuretools 更新到 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的正确方法是什么(如果是熊猫,那么代码错误在哪里?)(或者如果没有错误,那么我应该手动将截止时间转换为木工在dfs之前的代码中?)

标签: pythonmachine-learningfeaturetools

解决方案


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

推荐阅读