探索 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
重要的時刻常常出現在微小縫隙,所以要保持警覺,因為這些時刻可能改變一切。
    32會員
    37內容數
    歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
    留言0
    查看全部
    發表第一個留言支持創作者!
    Karen的沙龍 的其他內容
    matplotlib 無法顯示中文,看了很多篇教學文都無效 mac 解法可以參考這篇...
    在進行開發工作時,可能會使用不同的 Git 帳號做登入和推送的情形,例如: 公司的 Git 帳號和個人的帳號,這樣做的好處是為了確保開發工作能清楚劃分,所以需要做切換帳號的動作,特別是在不同的專案間切換 commit 的對象,因此有了這篇文紀錄這個過程。
    網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
    上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
    「我只有 Windows 電腦也可以操作 Linux 指令嗎?」 「想試試看其他作業系統,需要移除作業系統再重灌嗎?」 「想了解虛擬化,快來試試看 VirtualBox」 今天就來實作 VirtualBox 安裝 Linux ubuntu 作業系統吧!
    matplotlib 無法顯示中文,看了很多篇教學文都無效 mac 解法可以參考這篇...
    在進行開發工作時,可能會使用不同的 Git 帳號做登入和推送的情形,例如: 公司的 Git 帳號和個人的帳號,這樣做的好處是為了確保開發工作能清楚劃分,所以需要做切換帳號的動作,特別是在不同的專案間切換 commit 的對象,因此有了這篇文紀錄這個過程。
    網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
    上篇我們在安裝 VirtualBox 練習使用虛擬化切割出獨立空間做開發,那除了使用 VM 達到虛擬化外,另一個輕量級的虛擬化技術 - 容器化。 要使用容器,那就不能不認識 Docker
    「我只有 Windows 電腦也可以操作 Linux 指令嗎?」 「想試試看其他作業系統,需要移除作業系統再重灌嗎?」 「想了解虛擬化,快來試試看 VirtualBox」 今天就來實作 VirtualBox 安裝 Linux ubuntu 作業系統吧!
    你可能也想看
    Google News 追蹤
    Thumbnail
    接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
    Thumbnail
    🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
    Thumbnail
    唯劇場藝術大使出任務第二篇,這次是參與表演課系列第三堂「表達篇:聲得人心」,庭溦老師將帶著大家「探索聲音的不同樣貌」,聲音是與外界溝通的媒介之一,如何自在地侃侃而談,運用舒服的聲線清楚準確的傳達資訊,最後利用世界名曲小星星進行創意歌曲改編,每堂課都收穫滿滿,讓我們繼續看看吧!
    Thumbnail
    燒烤肉類是一種廣受歡迎的烹飪方式,它能讓肉質變得香嫩多汁。然而,你知道這種美味的背後涉及到一個有趣的化學過程嗎?在這篇文章中,我們將探索肉類燒烤時蛋白質的變性過程、化學機構以及相關的製作方式和口感變化。
    Thumbnail
    2020第十五任總統大選,桃園市不算是投票率特別突出的直轄市,但是中選會報表卻透露出一個訊息,全市平均每所選舉人數為1,434人,讓人直覺有問題,因為中選會主委李進勇先生要增設投票所將每所選舉人數壓下到1,200人以下言猶在耳,怎麼到綠營首長的桃園市就犯規了呢? 經過詳細法(用到每個投票所數據)驗偽
    Thumbnail
    一位太太按時煮好晚餐,等待先生回家,但先生晚回來了,也沒有事前打電話,回來時還一臉不高興,太太看了也一肚子氣,就問:「你怎麼這麼晚回來?」先生臉色更難看了,不發一語就回房間去了,兩人都很不高興。... 這是在親密關係中很常見、很小的一件事。但是,容易累積成彼此在關係與溝通上的很大問題。
    Thumbnail
    先熟悉冰山探索的個人基礎練習,再開始練習關係的冰山基礎練習。若能在自己身上進行這兩種基礎練習,除了對於自我成長有極大的幫助之外,等到越來越熟悉這樣的探索過程之後,就更能因瞭解自己而瞭解他人的狀態,甚至有機會透過對話(包含一致性表達和冰山歷程的提問),在和對方的互動、交流中,協助對方或影響彼此。
    Thumbnail
    John Banmen曾經給了一個比喻,探索自己的冰山,就像是剛學習一項樂器,從音階開始練習,先按順序彈奏一遍、再倒過來,等到熟悉音階之後,才練習簡易的曲調。冰山的八個層次,可以視為基本的八個音階,先按順序來回走過一遍,這樣練習多次、熟悉之後,再開始練習比較複雜的、更適合你的個人習慣的探索歷程。
    Thumbnail
    我們將會對動態設定學習率(learning rate)作為最陡梯度下降法的變異演算法做介紹。內容包括了解釋什麼事循環式的學習率調整排程法和何謂使用指數衰退權重來計算移動平均值,同時也介紹如何對大量參數的變數進行最佳化和目前活躍的演算法變異。如 adagrad, adadelta 和 RMSprop
    Thumbnail
    謝謝你們讓我尋回接觸海洋的感動,同時希望我們人類也能夠讓你們好好地繼續生活下去,這樣我們才能再次相遇。 那一天,當我拿下像章魚般死命吸在眼周的蛙鏡,放掉口中那不知被幾千人咬合過的呼吸管,迷人萬千的海底世界從此就被我封印在19年前的墾丁小灣岸邊。只因我將臉埋進海浪的鹹鹹胸脯裡不過十分鐘,誰能料到我竟
    Thumbnail
    本文接續上篇直覺式強化學習教學,著重於解釋強化學習中常見的探索和竭盡難題,以及如何利用不同的方法來進行策略函式的學習,並與策略梯度做比較。同時,介紹 A2CS 所使用的損失函式,以及應用這個損失函示於深度學習時會遇到的訓練難題。最後,總結強化學習和深度學習的未來方向,以及本系列文章所企圖達到的目標。
    Thumbnail
    本文介紹由 OpenAI 發表的強化學習中基準模型,並藉由國外軟體工程師所繪畫的生動動畫來做直覺式的強化學習介紹以及教學。在漫畫中,將會比較蒙地卡羅和 Advantage Actor Critic (A2C) 模擬方法的不同,並將強化學習中的基礎觀念融入漫畫中。
    Thumbnail
    接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
    Thumbnail
    🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
    Thumbnail
    唯劇場藝術大使出任務第二篇,這次是參與表演課系列第三堂「表達篇:聲得人心」,庭溦老師將帶著大家「探索聲音的不同樣貌」,聲音是與外界溝通的媒介之一,如何自在地侃侃而談,運用舒服的聲線清楚準確的傳達資訊,最後利用世界名曲小星星進行創意歌曲改編,每堂課都收穫滿滿,讓我們繼續看看吧!
    Thumbnail
    燒烤肉類是一種廣受歡迎的烹飪方式,它能讓肉質變得香嫩多汁。然而,你知道這種美味的背後涉及到一個有趣的化學過程嗎?在這篇文章中,我們將探索肉類燒烤時蛋白質的變性過程、化學機構以及相關的製作方式和口感變化。
    Thumbnail
    2020第十五任總統大選,桃園市不算是投票率特別突出的直轄市,但是中選會報表卻透露出一個訊息,全市平均每所選舉人數為1,434人,讓人直覺有問題,因為中選會主委李進勇先生要增設投票所將每所選舉人數壓下到1,200人以下言猶在耳,怎麼到綠營首長的桃園市就犯規了呢? 經過詳細法(用到每個投票所數據)驗偽
    Thumbnail
    一位太太按時煮好晚餐,等待先生回家,但先生晚回來了,也沒有事前打電話,回來時還一臉不高興,太太看了也一肚子氣,就問:「你怎麼這麼晚回來?」先生臉色更難看了,不發一語就回房間去了,兩人都很不高興。... 這是在親密關係中很常見、很小的一件事。但是,容易累積成彼此在關係與溝通上的很大問題。
    Thumbnail
    先熟悉冰山探索的個人基礎練習,再開始練習關係的冰山基礎練習。若能在自己身上進行這兩種基礎練習,除了對於自我成長有極大的幫助之外,等到越來越熟悉這樣的探索過程之後,就更能因瞭解自己而瞭解他人的狀態,甚至有機會透過對話(包含一致性表達和冰山歷程的提問),在和對方的互動、交流中,協助對方或影響彼此。
    Thumbnail
    John Banmen曾經給了一個比喻,探索自己的冰山,就像是剛學習一項樂器,從音階開始練習,先按順序彈奏一遍、再倒過來,等到熟悉音階之後,才練習簡易的曲調。冰山的八個層次,可以視為基本的八個音階,先按順序來回走過一遍,這樣練習多次、熟悉之後,再開始練習比較複雜的、更適合你的個人習慣的探索歷程。
    Thumbnail
    我們將會對動態設定學習率(learning rate)作為最陡梯度下降法的變異演算法做介紹。內容包括了解釋什麼事循環式的學習率調整排程法和何謂使用指數衰退權重來計算移動平均值,同時也介紹如何對大量參數的變數進行最佳化和目前活躍的演算法變異。如 adagrad, adadelta 和 RMSprop
    Thumbnail
    謝謝你們讓我尋回接觸海洋的感動,同時希望我們人類也能夠讓你們好好地繼續生活下去,這樣我們才能再次相遇。 那一天,當我拿下像章魚般死命吸在眼周的蛙鏡,放掉口中那不知被幾千人咬合過的呼吸管,迷人萬千的海底世界從此就被我封印在19年前的墾丁小灣岸邊。只因我將臉埋進海浪的鹹鹹胸脯裡不過十分鐘,誰能料到我竟
    Thumbnail
    本文接續上篇直覺式強化學習教學,著重於解釋強化學習中常見的探索和竭盡難題,以及如何利用不同的方法來進行策略函式的學習,並與策略梯度做比較。同時,介紹 A2CS 所使用的損失函式,以及應用這個損失函示於深度學習時會遇到的訓練難題。最後,總結強化學習和深度學習的未來方向,以及本系列文章所企圖達到的目標。
    Thumbnail
    本文介紹由 OpenAI 發表的強化學習中基準模型,並藉由國外軟體工程師所繪畫的生動動畫來做直覺式的強化學習介紹以及教學。在漫畫中,將會比較蒙地卡羅和 Advantage Actor Critic (A2C) 模擬方法的不同,並將強化學習中的基礎觀念融入漫畫中。