ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
生活随笔
收集整理的這篇文章主要介紹了
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ML之FE:基于load_mock_customer數據集(模擬客戶)利用featuretools工具實現自動特征生成/特征衍生
?
?
?
?
目錄
基于load_mock_customer數據集(模擬客戶)利用featuretools工具實現自動特征生成/特征衍生
設計思路
輸出結果
實現代碼
?
?
?
推薦文章
ML之FE:基于load_mock_customer數據集(模擬客戶)利用featuretools工具實現自動特征生成/特征衍生
ML之FE:基于load_mock_customer數據集(模擬客戶)利用featuretools工具實現自動特征生成/特征衍生實現
基于load_mock_customer數據集(模擬客戶)利用featuretools工具實現自動特征生成/特征衍生
設計思路
?
?
輸出結果
?
customer_id zip_code join_date date_of_birth 0 1 60091 2011-04-17 10:48:33 1994-07-18 1 2 13244 2012-04-15 23:31:04 1986-08-18 2 3 13244 2011-08-13 15:42:34 2003-11-21 3 4 60091 2011-04-08 20:08:14 2006-08-15 4 5 60091 2010-07-17 05:27:50 1984-07-28session_id customer_id device session_start 13 14 1 tablet 2014-01-01 03:28:00 6 7 3 tablet 2014-01-01 01:39:40 1 2 5 mobile 2014-01-01 00:17:20 28 29 1 mobile 2014-01-01 07:10:05 24 25 3 desktop 2014-01-01 05:59:40transaction_id session_id transaction_time product_id amount 74 232 5 2014-01-01 01:20:10 1 139.20 231 27 17 2014-01-01 04:10:15 2 90.79 434 36 31 2014-01-01 07:50:10 3 62.35 420 56 30 2014-01-01 07:35:00 3 72.70 54 444 4 2014-01-01 00:58:30 4 43.59zip_code ... NUM_UNIQUE(transactions.sessions.device) customer_id ... 1 60091 ... 3 2 13244 ... 3 3 13244 ... 3 4 60091 ... 3 5 60091 ... 3[5 rows x 77 columns]customer_id ... customers.YEAR(join_date) session_id ... 1 2 ... 2012 2 5 ... 2010 3 4 ... 2011 4 1 ... 2011 5 4 ... 2011[5 rows x 44 columns] <Feature: MODE(transactions.WEEKDAY(transaction_time))> The most frequently occurring value of the day of the week of the "transaction_time" of all instances of "transactions" for each "session_id" in "sessions".?
?
?
實現代碼
import featuretools as ft# 1、定義數據集 data = ft.demo.load_mock_customer() ''' 在這個玩具數據集中,有3個表。每個表在Featuretools中稱為一個實體。 customers:擁有會話的獨特客戶 sessions:唯一的會話和相關屬性 transactions:此會話中的事件列表 ''' customers_df = data["customers"] sessions_df = data["sessions"] transactions_df = data["transactions"] print(customers_df) print(sessions_df.sample(5)) print(transactions_df.sample(5))# 2、DFS設計 # (1)、指定一個包含數據集中所有實體的字典 entities = {"customers" : (customers_df, "customer_id"),"sessions" : (sessions_df, "session_id", "session_start"),"transactions" : (transactions_df, "transaction_id", "transaction_time")}# (2)、指定實體間如何關聯:當兩個實體有一對多關系時,我們稱之為“one”實體,即“parent entity”。 # 父類和子類之間的關系是這樣定義的: # (parent_entity, parent_variable, child_entity, child_variable) # 在這個數據集中,我們有兩個關系 relationships = [("sessions", "session_id", "transactions", "session_id"),("customers", "customer_id", "sessions", "customer_id")]# 為了管理實體和關系的設置,我們建議使用EntitySet類,它為管理這樣的數據提供了方便的api# (3)、運行深度特征合成 ''' DFS的最小輸入是一組實體、一組關系和計算特性的“target_entity”。DFS的輸出是一個特征矩陣和相應的特征定義列表。 讓我們首先為數據中的每個客戶創建一個特性矩陣,那么現在有幾十個新特性來描述客戶的行為。 ''' feature_matrix_customers, features_defs = ft.dfs(entities=entities,relationships=relationships,target_entity="customers") print(feature_matrix_customers)# (4)、改變目標的實體 # DFS如此強大的原因之一是它可以為我們的數據中的任何實體創建一個特征矩陣。例如,如果我們想為會話構建特性 feature_matrix_sessions, features_defs = ft.dfs(entities=entities,relationships=relationships,target_entity="sessions") print(feature_matrix_sessions.head(5))# (5)、理解特征輸出 ''' 一般來說,Featuretools通過特性名稱引用生成的特性。 為了讓特性更容易理解,Featuretools提供了兩個額外的工具,Featuretools .graph_feature()和Featuretools .describe_feature(), 來幫助解釋什么是特性以及Featuretools生成特性的步驟。 '''feature = features_defs[18] print(feature)# (6)、特征譜系圖 #特征譜系圖可視地遍歷功能生成過程。從基本數據開始,它們一步一步地展示應用的原語和生成的中間特征,以創建最終特征。 import matplotlib.pyplot as plt ft.graph_feature(feature) plt.show()# (7)、特征描述 ''' 功能工具還可以自動生成功能的英文句子描述。特性描述有助于解釋什么是特性,并且可以通過包含手動定義的自定義來進一步改進。 有關如何自定義自動生成的特性描述的詳細信息,請參見生成特性描述。 ''' print(ft.describe_feature(feature))?
?
?
?
?
總結
以上是生活随笔為你收集整理的ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ML之DS:仅需一行代码实现对某字段下的
- 下一篇: 成功解决Value Error: Una