xgboost輸出特徵重要性排名和權重值

2021-08-21 18:46:20 字數 1233 閱讀 7442

在機器學習實踐中,我們要經常用到xgboost框架去訓練資料,然後用訓練得到的模型再去**其他未知的資料的標籤。

在判斷訓練得到的模型是否合理時,乙個很重要的步驟就是檢視xgboost模型的特徵重要性排序。如果觀察得到模型的排名前幾的特徵都不符合我們正常的思維,那麼模型很可能是不穩定或者有問題的。在訓練得到模型檔案及特徵對映檔案後,可以通過下面一段**檢視特徵排名、特徵名稱、特徵權重值

#-*-encoding: utf-8-*-

import xgboost as xgb

import pandas as pd

import operator

from matplotlib import pylab as plt

from pylab import *

fm = mpl.font_manager

fm.get_cachedir()

model_dir = 'your_model_directory_name/'

model_file = 'your_model_file_name'

fmap_file = 'your_fmap_file_name'

model =xgb.booster(model_file=model_dir + model_file)

importance = model.get_fscore(fmap=model_dir + fmap_file)

f = open(model_dir + fmap_file)

fmap_dict = {}

for line in f:

line = line.strip().split()

fmap_dict[line[1]] = line[0]

feature_num = 10 #想要檢視top10的特徵名稱及權重,這裡設定想要檢視前多少個特徵及其權重

importance = sorted(importance.items(), key=operator.itemgetter(1), reverse=true)

importance = importance[:feature_num]

index = 1

print '特徵排名', '特徵名稱', '特徵權重值'

for line in importance:

print index, fmap_dict[str(line[0])[1:]], line[1]

index += 1

xgboost特徵重要性

from sklearn.model selection import train test split from sklearn import metrics from sklearn.datasets import make hastie 10 2 from xgboost.sklearn im...

用xgboost獲取特徵重要性及應用

一 xgboost對特徵重要性進行排序的原理 即為什麼xgboost可以對特行的重要性進行排序 根據結構分數的增益情況,計算選擇哪個特徵的哪個分割點 某個特徵的重要性,就是它在所有樹 現的次數之和。二 如何繪製特徵重要性條形圖 三 如何根據特種的重要性進行特徵選擇 特徵選擇的閾值thresh是自己確...

xgboost和隨機森林特徵重要性計算方法

隨機森林中特徵重要性和xgboost不同 隨機森林中的特徵重要性主要是基於不純度 也可以叫做gini importance 計算某乙個節點不純度為 其中,k omega k k le ft omega left ri ght omega right 分別為節點k以及其左右子節點中訓練樣本個數與總訓練...