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

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

數據組的 Python featuretools 差異

數據組的 Python featuretools 差異

慕仙森 2023-03-30 16:44:03
我正在嘗試使用 featuretools 來計算時間序列函數。具體來說,我想通過組鍵 (user_id) 從 previous(x) 中減去 current(x),但是我在實體集中添加這種關系時遇到了麻煩。df = pd.DataFrame({    "user_id": [i % 2 for i in range(0, 6)],    'x': range(0, 6),    'time': pd.to_datetime(['2014-1-1 04:00', '2014-1-1 05:00',                             '2014-1-1 06:00', '2014-1-1 08:00', '2014-1-1 10:00', '2014-1-1 12:00'])     })print(df.to_string())       user_id  x                time0        0      0 2014-01-01 04:00:001        1      1 2014-01-01 05:00:002        0      2 2014-01-01 06:00:003        1      3 2014-01-01 08:00:004        0      4 2014-01-01 10:00:005        1      5 2014-01-01 12:00:00es = ft.EntitySet(id='test')es.entity_from_dataframe(entity_id='data', dataframe=df,                         variable_types={                             'user_id': ft.variable_types.Categorical,                             'x': ft.variable_types.Numeric,                             'time': ft.variable_types.Datetime                         },                         make_index=True, index='index',                         time_index='time'                         )然后我嘗試調用 dfs,但我無法正確建立關系......fm, fl = ft.dfs(    target_entity="data",    entityset=es,    trans_primitives=["diff"])print(fm.to_string())       user_id  x  DIFF(x)index                     0            0  0      NaN1            1  1      1.02            0  2      1.03            1  3      1.04            0  4      1.05            1  5      1.0但我真正想要得到的是用戶的差異。也就是說,從每個用戶的最后一個值開始:       user_id  x  DIFF(x)index                     0            0  0      NaN1            1  1      NaN2            0  2      2.03            1  3      2.04            0  4      2.05            1  5      2.0我如何在功能工具中獲得這種關系?我嘗試了幾個教程,但無濟于事。我很難過。謝謝!
查看完整描述

1 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

您可以通過為用戶規范化實體并通過轉換原語應用組來獲得預期的輸出。我將通過一個使用此數據的快速示例。


user_id  x                time

      0  0 2014-01-01 04:00:00

      1  1 2014-01-01 05:00:00

      0  2 2014-01-01 06:00:00

      1  3 2014-01-01 08:00:00

      0  4 2014-01-01 10:00:00

      1  5 2014-01-01 12:00:00

首先,創建實體集并為用戶規范化實體。


es = ft.EntitySet(id='test')


es.entity_from_dataframe(

    dataframe=df,

    entity_id='data',

    make_index=True,

    index='index',

    time_index='time',

)


es.normalize_entity(

    base_entity_id='data',

    new_entity_id='users',

    index='user_id',

)

然后,通過 DFS 中的變換原語應用組。


fm, fl = ft.dfs(

    target_entity="data",

    entityset=es,

    groupby_trans_primitives=["diff"],

)


fm.filter(regex="DIFF", axis=1)

你應該得到用戶的差異。


       DIFF(x) by user_id

index

0                     NaN

1                     NaN

2                     2.0

3                     2.0

4                     2.0

5                     2.0


查看完整回答
反對 回復 2023-03-30
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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