探索 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
33會員
43內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
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
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
XGBoost(eXtreme Gradient Boosting)是一種基於梯度提升框架的機器學習算法,專注於高效的分類與迴歸問題。它廣泛應用於數據分析和競賽中,因其出色的模型訓練能力。本文探討 XGBoost 實際中的實作,適合希望掌握此技術的讀者,並對模型調參提供有價值的技巧與建議。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
微調(Fine tune)是深度學習中遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練。 本文主要介紹如何使用新的訓練圖檔在tesseract 辨識模型進行Fine tune 有關於安裝的部分可以參考友人的其他文章 Tesseract OCR - 繁體中文【安裝篇】 將所有資料
Thumbnail
本文介紹自我監督學習的概念和訓練方式,以BERT和GPT為例,深入探討Masking Input及Fine-Tune的實際操作和可應用性。
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
這篇文章介紹瞭如何使用sigmoid函數來解決函數過於簡單導致的模型偏差問題,並透過尋找函數和參數來逼近precise linear curve。另外,也講述瞭如何尋找讓損失函數最小的參數以及使用batch和反覆進行Sigmoid的方法。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳student_id為101的這筆資料,並且列出它的"name"和"age"欄位。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ |
Thumbnail
本文會利用sklearn引入breast_cancer datasets來訓練,在處理數據的部份,特徵工程用兩種方式去做處理,分別是特徵選取與特徵萃取的方式去做比較。 特徵選取的方法中,使用了KNN 分類器來選出最重要的兩個特徵 特徵萃取的方法中,使用了PCA降維
Thumbnail
Sequential Feature Selection(SFS) 用中文來解釋為,逐一特徵選取訓練,找出最重要的特徵,以提高模型的性能和效率 SFS 的一些用途包括: 維度縮減: 在高維度數據中,許多特徵可能是多餘或不重要的,使用 SFS 可以找到最能代表數據的特徵,從而減少計算和記憶體需求
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
XGBoost(eXtreme Gradient Boosting)是一種基於梯度提升框架的機器學習算法,專注於高效的分類與迴歸問題。它廣泛應用於數據分析和競賽中,因其出色的模型訓練能力。本文探討 XGBoost 實際中的實作,適合希望掌握此技術的讀者,並對模型調參提供有價值的技巧與建議。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
微調(Fine tune)是深度學習中遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練。 本文主要介紹如何使用新的訓練圖檔在tesseract 辨識模型進行Fine tune 有關於安裝的部分可以參考友人的其他文章 Tesseract OCR - 繁體中文【安裝篇】 將所有資料
Thumbnail
本文介紹自我監督學習的概念和訓練方式,以BERT和GPT為例,深入探討Masking Input及Fine-Tune的實際操作和可應用性。
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
這篇文章介紹瞭如何使用sigmoid函數來解決函數過於簡單導致的模型偏差問題,並透過尋找函數和參數來逼近precise linear curve。另外,也講述瞭如何尋找讓損失函數最小的參數以及使用batch和反覆進行Sigmoid的方法。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳student_id為101的這筆資料,並且列出它的"name"和"age"欄位。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ |
Thumbnail
本文會利用sklearn引入breast_cancer datasets來訓練,在處理數據的部份,特徵工程用兩種方式去做處理,分別是特徵選取與特徵萃取的方式去做比較。 特徵選取的方法中,使用了KNN 分類器來選出最重要的兩個特徵 特徵萃取的方法中,使用了PCA降維
Thumbnail
Sequential Feature Selection(SFS) 用中文來解釋為,逐一特徵選取訓練,找出最重要的特徵,以提高模型的性能和效率 SFS 的一些用途包括: 維度縮減: 在高維度數據中,許多特徵可能是多餘或不重要的,使用 SFS 可以找到最能代表數據的特徵,從而減少計算和記憶體需求