在機器學習實踐中,我們要經常用到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以及其左右子節點中訓練樣本個數與總訓練...