我試圖弄清楚 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:“物體集中不存在資料幀列車”
我試圖研究 Featuretools 網站上的教程,但我能找到的只是具有多個資料框的教程,所以它根本沒有幫助我。
我錯在哪里?我該如何糾正錯誤?
謝謝!
稍后編輯:我正在使用 PyCharm。當我在腳本模式下作業時,出現上述錯誤。但是,當我使用命令列時,一切正常。
uj5u.com熱心網友回復:
我在您的代碼中看到的唯一問題是您沒有用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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468426.html
