探索 XGBoost:如何查看訓練模型中的特徵名稱

更新於 發佈於 閱讀時間約 6 分鐘

How to access feature names in a trained XGB model ?

故事是這樣的...

在接手某個專案中,取得了一份已經訓練好的 pickle 檔案記載著 XGBoost model weight ,但因為 feature engineering 的程式碼交接了幾手,而我急於使用這個模型來 inference 新的數據,就在此刻犯下了一個看似微不足道但導致後續作業都成了白工的錯誤:沒有檢查 model 的 feature name

raw-image

所以就有這篇文章~ 提醒未來的自己不要忘記這次的經驗!那開始今天的分享~


故事說完了,來說今天的目標

這篇文章將紀錄如何通過 XGBoost 提供的方法來獲取已訓練模型中的特徵名稱,並附上 sample code (以 Kaggle titanic dataset 為例)。

訓練一個 XGBoost model

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score

# 讀取數據集
data = pd.read_csv('/kaggle/input/titanic/train.csv')

# 選擇特徵和目標變量
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']
target = 'Survived'

X = data[features]
y = data[target]

# 處理缺失值和類別特徵
X['Age'].fillna(X['Age'].median(), inplace=True)
X['Embarked'].fillna(X['Embarked'].mode()[0], inplace=True)
X['Sex'] = X['Sex'].map({'male': 0, 'female': 1})
X['Embarked'] = X['Embarked'].map({'C': 0, 'Q': 1, 'S': 2})

# 將類別特徵轉換成獨熱編碼
X = pd.get_dummies(X, columns=['Embarked'], drop_first=True)

# 將數據集分成訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化 XGBoost 分類器
model = XGBClassifier(learning_rate=0.1, n_estimators=100, max_depth=3)

# 訓練模型
model.fit(X_train, y_train)

# 預測測試集
y_pred = model.predict(X_test)

# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

正確輸出 : Accuracy: 0.8212290502793296

儲存 weight 成為 pickle 檔案

import pickle
with open('xgboost_model.pkl', 'wb') as file:
pickle.dump(model, file)

讀取 pickle

import pickle

# 從 Pickle 文件中載入模型
with open('xgboost_model.pkl', 'rb') as file:
loaded_model = pickle.load(file)

今天的重頭戲: 通過 pickle 確認 feature name

在 XGBoost 中,模型由許多樹(boosters)組成,每個樹都可以提供有關模型的一些信息。我們可以使用 get_booster() 方法從載入的模型中獲取 Booster 物件,然後通過查詢 feature_names 屬性,我們可以獲得模型中使用的特徵名稱。

clf = loaded_model.get_booster()
print(clf.feature_names)
print(type(clf))

會得到輸出:

['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked_1', 'Embarked_2']
<class 'xgboost.core.Booster'>

就可以知道這次使用到的特徵名稱為哪些,和 feature 輸入的順序!

好啦~終於完成了!希望有幫助到在找 feature_name 的人,我們下次見!

raw-image
重要的時刻常常出現在微小縫隙,所以要保持警覺,因為這些時刻可能改變一切。
留言
avatar-img
留言分享你的想法!
avatar-img
Karen的沙龍
34會員
50內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
Karen的沙龍的其他內容
2024/03/06
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
2024/03/06
本文探討了在使用 pandas 處理資料時應注意的幾個關鍵點,以及如何減少因資料型態問題而產生的錯誤,確保資料的原始意義得以保留。主要包括Pandas 資料處理深入解析,尋找CSV之外的數據儲存方案,以及優化資料處理策略。
Thumbnail
2023/10/30
在數據科學和機器學習中,特徵工程是提高模型性能的關鍵步驟之一,通過創建新特徵或轉換現有特徵,我們可以更好地捕捉數據中的信息,提高模型的預測能力。然而,當處理大數據集時,特徵工程可能變得耗時,而且若是在研發階段,特徵其實是需要快速迭代去產生並且做後續的實驗,這也是近期遇到的問題,因此想在這篇文章實作多
Thumbnail
2023/10/30
在數據科學和機器學習中,特徵工程是提高模型性能的關鍵步驟之一,通過創建新特徵或轉換現有特徵,我們可以更好地捕捉數據中的信息,提高模型的預測能力。然而,當處理大數據集時,特徵工程可能變得耗時,而且若是在研發階段,特徵其實是需要快速迭代去產生並且做後續的實驗,這也是近期遇到的問題,因此想在這篇文章實作多
Thumbnail
2023/10/09
1. 問題定義 每一個成功的模型都始於明確的問題定義! 核心思考:你的模型想要達到什麼目的? 例如:是要偵測每一筆交易是否涉及洗錢,還是要從大量資料中找出可能的洗錢關聯戶? 2. 數據檢查 數據是模型的基石,但不是所有數據都是有用的! 核心思考:你的數據夠嗎?時間分佈如何?正負樣本
Thumbnail
2023/10/09
1. 問題定義 每一個成功的模型都始於明確的問題定義! 核心思考:你的模型想要達到什麼目的? 例如:是要偵測每一筆交易是否涉及洗錢,還是要從大量資料中找出可能的洗錢關聯戶? 2. 數據檢查 數據是模型的基石,但不是所有數據都是有用的! 核心思考:你的數據夠嗎?時間分佈如何?正負樣本
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
本文為技術分析進階,適合有技術分析基礎者閱讀,不建議未學過基礎技術分析者閱讀
Thumbnail
本文為技術分析進階,適合有技術分析基礎者閱讀,不建議未學過基礎技術分析者閱讀
Thumbnail
前言 這篇會拿Finlab上的策略與機器學習預測線圖的因子進行結合。由於模型是透過2007-2011年的線圖作為訓練資料,回測的時候會從2012年開始以示公平。 還沒看過前面兩篇的可以點下面連結,會比較看得懂接下來的內容。 第一篇: 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲
Thumbnail
前言 這篇會拿Finlab上的策略與機器學習預測線圖的因子進行結合。由於模型是透過2007-2011年的線圖作為訓練資料,回測的時候會從2012年開始以示公平。 還沒看過前面兩篇的可以點下面連結,會比較看得懂接下來的內容。 第一篇: 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲
Thumbnail
還沒有看過上一篇的可以點擊下面連結 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲跌。(1)論文解析。 這一篇會把注意力放在論文提到的技術並套用在台股市場,也會使用論文中的方法進行驗證,看看是否在台股也有一樣的超額報酬。 資料生成 第一步也是最難的一步-資料生成。 這裡
Thumbnail
還沒有看過上一篇的可以點擊下面連結 什麼?!AI也看得懂k線圖?利用機器學習來判斷股票漲跌。(1)論文解析。 這一篇會把注意力放在論文提到的技術並套用在台股市場,也會使用論文中的方法進行驗證,看看是否在台股也有一樣的超額報酬。 資料生成 第一步也是最難的一步-資料生成。 這裡
Thumbnail
CFA和SEM分析的擬合指標通常需要達到專家門檻,才可以進行分析。我整理知名統計學者Hair的建議,並附上相關文獻佐證,讓讀者能正確地進行模型修正,讓適配指標過關。
Thumbnail
CFA和SEM分析的擬合指標通常需要達到專家門檻,才可以進行分析。我整理知名統計學者Hair的建議,並附上相關文獻佐證,讓讀者能正確地進行模型修正,讓適配指標過關。
Thumbnail
在AI浪潮下的訊號開發 提到可將AI訓練好的模型產生之訊號當成一個商品來匯入,今天將手把把示範如何把這訊號進行匯入成商品,並在策略撰寫時,可引用至此訊號,當為輔助資訊。 此表格為筆者使用的CNN模型訊號,在此利用開盤價、最高價、最低價、收盤價的技巧,讓多方趨勢的日期呈現紅K、空方趨勢的日期呈現黑K
Thumbnail
在AI浪潮下的訊號開發 提到可將AI訓練好的模型產生之訊號當成一個商品來匯入,今天將手把把示範如何把這訊號進行匯入成商品,並在策略撰寫時,可引用至此訊號,當為輔助資訊。 此表格為筆者使用的CNN模型訊號,在此利用開盤價、最高價、最低價、收盤價的技巧,讓多方趨勢的日期呈現紅K、空方趨勢的日期呈現黑K
Thumbnail
How to access feature names in a trained XGB model ? 故事是這樣的... 在接手某個專案中,取得了一份已經訓練好的 pickle 檔案記載著 XGBoost model weight ,但因為 feature engineering 的程式碼交
Thumbnail
How to access feature names in a trained XGB model ? 故事是這樣的... 在接手某個專案中,取得了一份已經訓練好的 pickle 檔案記載著 XGBoost model weight ,但因為 feature engineering 的程式碼交
Thumbnail
常常我們在財經節目聽到一堆技術指標都可以成功獲利,但真的如此嗎? 這麼簡單的技術指標操作就能獲利,早就人人變成有錢人了! 相信數據會說話,身為軟體工程師就最喜歡用數字來解讀一切了,因此這個篇章將會手把手教你如何使用Python語言來回測你的股票及交易策略。 剛接觸股市時最常聽到的就是KD、RSI、
Thumbnail
常常我們在財經節目聽到一堆技術指標都可以成功獲利,但真的如此嗎? 這麼簡單的技術指標操作就能獲利,早就人人變成有錢人了! 相信數據會說話,身為軟體工程師就最喜歡用數字來解讀一切了,因此這個篇章將會手把手教你如何使用Python語言來回測你的股票及交易策略。 剛接觸股市時最常聽到的就是KD、RSI、
Thumbnail
chatgpt說得一口好資料科學跟股票分析,我就來實際看看他會寫什麼出來
Thumbnail
chatgpt說得一口好資料科學跟股票分析,我就來實際看看他會寫什麼出來
Thumbnail
潛在類別模式(latent class modeling, LCM)和潛在剖面分析(Latent Profile Analysis, LPA)是探討潛在類別變項的統計技術。兩者與因素分析最大的不同在於潛在變項(因素)的形式。本文將介紹潛在類別/剖面/混合分析操作1:找出最佳組數
Thumbnail
潛在類別模式(latent class modeling, LCM)和潛在剖面分析(Latent Profile Analysis, LPA)是探討潛在類別變項的統計技術。兩者與因素分析最大的不同在於潛在變項(因素)的形式。本文將介紹潛在類別/剖面/混合分析操作1:找出最佳組數
Thumbnail
這篇論文是用來交易ETF,利用cnn神經網路去預測買點跟賣點由於CNN吃的是圖片輸入更精確來說是一個二維矩陣輸入因此論文作者將ETF的開高低收去計算出15種技術指標乘上15天剛好就可以作成15X15的矩陣(當作圖片)餵給CNN模型當作輸入
Thumbnail
這篇論文是用來交易ETF,利用cnn神經網路去預測買點跟賣點由於CNN吃的是圖片輸入更精確來說是一個二維矩陣輸入因此論文作者將ETF的開高低收去計算出15種技術指標乘上15天剛好就可以作成15X15的矩陣(當作圖片)餵給CNN模型當作輸入
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News