xgboost輸出特徵重要性排名和權重值
阿新 • • 發佈:2018-11-01
在機器學習實踐中,我們要經常用到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