当我在 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)
我想弄清楚 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)