当我在 Featuretools 中只有一个数据框时,如何使用 get_valid_primitives?

How can I use get_valid_primitives when I have only one dataframe in Featuretools?

我想弄清楚 Featuretools 是如何工作的,我正在 Kaggle 上的房价数据集上测试它。由于数据集很大,我在这里只使用一组。

数据帧是:

train={'Id': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}, 'MSSubClass': {0: 60, 1: 20, 2: 60, 3: 70, 4: 60}, 'MSZoning': {0: 'RL', 1: 'RL', 2: 'RL', 3: 'RL', 4: 'RL'}, 'LotFrontage': {0: 65.0, 1: 80.0, 2: 68.0, 3: 60.0, 4: 84.0}, 'LotArea': {0: 8450, 1: 9600, 2: 11250, 3: 9550, 4: 14260}}

我为此数据框创建了一个 EntitySet:

es_train = ft.EntitySet()

我将数据框添加到创建的 EntitySet 中:

es_train.add_dataframe(dataframe_name='train', dataframe=train, index='Id')

然后我调用函数:

ap, tp = ft.get_valid_primitives(entityset=es_train, target_dataframe_name='train')

这里一切都崩溃了,因为我收到以下错误消息:

KeyError: 'DataFrame train does not exist in entity set'

我试图研究 Featuretools 网站上的教程,但我只能找到包含多个数据框的教程,所以它对我一点帮助都没有。

我哪里弄错了?我该如何纠正错误?

谢谢!

稍后编辑:我正在使用 PyCharm。当我在脚本模式下工作时,出现上述错误。但是,当我使用命令行时,一切正常。

我在你的代码中看到的唯一问题是你没有用 pd.Dataframe

包装你的火车对象

这段代码很适合我:

import featuretools as ft
import pandas as pd

train=pd.DataFrame({
    'Id': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}, 
    'MSSubClass': {0: 60, 1: 20, 2: 60, 3: 70, 4: 60}, 
    'MSZoning': {0: 'RL', 1: 'RL', 2: 'RL', 3: 'RL', 4: 'RL'}, 
    'LotFrontage': {0: 65.0, 1: 80.0, 2: 68.0, 3: 60.0, 4: 84.0}, 
    'LotArea': {0: 8450, 1: 9600, 2: 11250, 3: 9550, 4: 14260}
})

es_train = ft.EntitySet()
es_train.add_dataframe(dataframe_name='train', dataframe=train, index='Id')

_, tp = ft.get_valid_primitives(entityset=es_train, target_dataframe_name='train')


for p in tp:
    print(p.name)