亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

功能工具 cutoff_time 無法正常工作

功能工具 cutoff_time 無法正常工作

慕哥9229398 2022-05-24 16:40:39
我嘗試在 featuretool 的 dfs 函數中添加一個 cutoff_time 數據幀,以便我的數據幀中的每一行都有一個特定的截止時間。但我無法使 cutoff_time 數據幀按預期工作文檔說cutoff_time的第一列應該是'instance_id'。我不確定這意味著什么..我嘗試了目標實體(交易)的索引和目標實體(交易)的customer_id(id) . 他們倆都會弄亂feature_matrixmerkle_fake = pd.DataFrame()transaction_fake['order_date'] = ['2019-01-01','2018-01-01','2017-01-01','2018-05-23','2019-02-02','2018-12-21']transaction_fake['product_category'] = ['cat2','cat3','cat2','cat1','cat2','cat2']transaction_fake['id'] = ['1','2','1','3','1','2']transaction_fake['order_date'] = pd.to_datetime(transaction_fake['order_date'])transaction_fake['index'] = transaction_fake.index.tolist()merkle_fake['cust_id'] = ['1','2','3']es_demo = ft.EntitySet(id = 'demo')es_demo.entity_from_dataframe(entity_id='transaction', dataframe= transaction_fake,time_index = 'order_date',index = 'index')es_demo.entity_from_dataframe(entity_id='merkle', dataframe= merkle_fake,index = 'cust_id')relationship_fake = ft.Relationship(es_demo["merkle"]["cust_id"],es_demo["transaction"]["id"])es_demo = es_demo.add_relationship(relationship_fake)cutoff_times_demo = pd.DataFrame()cutoff_times_demo['instance_id'] = es_demo['transaction'].df['id']cutoff_times_demo['time'] = es_demo['transaction'].df['order_date']feature_matrix_demo, feature_defs_demo = ft.dfs(entityset=es_demo,                                               agg_primitives=['count'],                                               trans_primitives=[],                                               target_entity='transaction',                                               cutoff_time= cutoff_times_demo,                                               features_only = False)feature_matrix_demo 我希望輸出會是這樣的:    product_category    id  merkle.COUNT(transaction)2   cat2    1   11   cat3    2   13   cat1    3   15   cat2    2   20   cat2    1   24   cat2    1   3
查看完整描述

1 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

當您為 cutoff_time 傳入具有“instance_id”和“時間”列的 DataFrame 時,dfs 將計算由其“instance_id”標識的每個實例,直至并包括相應的“時間”?!癷nstance_id”標識目標實體中的行。

因此,當您傳入es_demo['transaction'].df['id']for時cutoff_times_demo['instance_id'],您會告訴dfs()在 '2017-01-01' 處計算第 1 行,在 '2018-01-01' 處計算第 2 行,在 '2018-05-23' 處計算第 3 行,在 '2018-05-23' 處計算第 2 行2018-12-21' 等。這會為返回的 feature_matrix 中的第一行生成 NaN 值,因為在 2017-01-01 之前和之前的第 1 行沒有數據。

要獲得您期望的輸出,請將您設置的 instance_id 列更改為:

cutoff_times_demo['instance_id'] = es_demo['transaction'].df['index']


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號