2022年Python頂級自動化特征工程框架?


2022年Python頂級自動化特征工程框架?

文章插圖
作者:韓信子@ShowMeAI 機器學習實戰系列:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/article-detail/328 聲明:版權所有,轉載請聯系平臺與作者并注明出處 收藏ShowMeAI查看更多精彩內容

2022年Python頂級自動化特征工程框架?

文章插圖
特征工程(feature engineering)指的是:利用領域知識和現有數據,創造出新的特征,用于機器學習算法 。
  • 特征:數據中抽取出來的對結果預測有用的信息 。
  • 特征工程:使用專業背景知識和技巧處理數據,使得特征能在機器學習算法上發揮更好的作用的過程 。
【2022年Python頂級自動化特征工程框架?】在業界有一個很流行的說法:數據與特征工程決定了模型的上限 , 改進算法只不過是逼近這個上限而已 。
特征工程的目的是提高機器學習模型的整體性能 , 以及生成最適合用于機器學習的算法的輸入數據集 。
關于特征工程的各種方法詳解,歡迎大家閱讀 ShowMeAI 整理的特征工程解讀教程 。
  • 機器學習實戰 | 機器學習特征工程全面解讀
自動化特征工程在很多生產項目中,特征工程都是手動完成的,而且它依賴于先驗領域知識、直觀判斷和數據操作 。整個過程是非常耗時的,并且場景或數據變換后又需要重新完成整個過程 。而『自動化特征工程』希望對數據集處理自動生成大量候選特征來幫助數據科學家和工程師們 , 可以選擇這些特征中最有用的進行進一步加工和訓練 。
自動化特征工程是很有意義的一項技術,它能使數據科學家將更多時間花在機器學習的其他環節上,從而提高工作效率和效果 。
2022年Python頂級自動化特征工程框架?

文章插圖
在本篇內容中,ShowMeAI將總結數據科學家在 2022 年必須了解的 Python 中最流行的自動化特征工程框架 。
  • Feature Tools
  • TSFresh
  • Featurewiz
  • PyCaret
Feature Tools簡介Featuretools是一個用于執行自動化特征工程的開源庫 。ShowMeAI在文章 機器學習實戰 | 自動化特征工程工具Featuretools應用 中也對它做了介紹 。
2022年Python頂級自動化特征工程框架?

文章插圖
要了解 Featuretools,我們需要了解以下三個主要部分:
  • Entities
  • Deep Feature Synthesis (DFS)
  • Feature primitives
在 Featuretools 中 , 我們用 Entity 來囊括原本 Pandas DataFrame 的內容,而 EntitySet 由不同的 Entity 組合而成 。
Featuretools 的核心是 Deep Feature Synthesis(DFS)  , 它實際上是一種特征工程方法,它能從單個或多個 DataFrame中構建新的特征 。
DFS 通過 EntitySet 上指定的 Feature primitives 創建特征 。例如 , primitives中的mean函數將對變量在聚合時進行均值計算 。
使用示例① 數據與預處理以下示例轉載自 官方快速入門 。
# 安裝# pip install featuretoolsimport featuretools as ftdata = https://www.huyubaike.com/biancheng/ft.demo.load_mock_customer()# 載入數據集customers_df = data["customers"]customers_df
2022年Python頂級自動化特征工程框架?

文章插圖
sessions_df = data["sessions"]sessions_df.sample(5)
2022年Python頂級自動化特征工程框架?

文章插圖
transactions_df = data["transactions"]transactions_df.sample(5)
2022年Python頂級自動化特征工程框架?

文章插圖
下面我們指定一個包含數據集中每個 DataFrame 的字典,如果數據集有索引index列,我們會和 DataFrames 一起傳遞 , 如下圖所示 。
dataframes = {"customers": (customers_df, "customer_id"),"sessions": (sessions_df, "session_id", "session_start"),"transactions": (transactions_df, "transaction_id", "transaction_time"),}接下來我們定義 DataFrame 之間的連接 。在這個例子中,我們有兩個關系:
relationships = [("sessions", "session_id", "transactions", "session_id"),("customers", "customer_id", "sessions", "customer_id"),]② 深度特征合成接下來我們可以通過DFS生成特征了,它需要『DataFrame 的字典』、『Dataframe關系列表』和『目標 DataFrame 名稱』3個基本輸入 。
feature_matrix_customers, features_defs = ft.dfs(dataframes=dataframes,relationships=relationships,target_dataframe_name="customers",)feature_matrix_customers

推薦閱讀