使用XGboost模組XGBClassifier、plot_importance來做特徵重要性排序

小白tree發表於2019-09-01

anaconda安裝xgboost庫戳這兒


更新:修改f1,f2等欄位請戳這裡


'''
參考:http://www.shujuren.org/article/625.html
'''
from numpy import loadtxt
from xgboost import XGBClassifier
from xgboost import plot_importance
from matplotlib import  pyplot
import warnings
warnings.filterwarnings("ignore")

# np.load_txt使用方法:www.manongjc.com/article/4883.html
# 以','為分割符,跳過1行(標features那一行)
dataset = loadtxt(r"H:\randomForest_file\feat_sort\XGboot\label_csv.csv", skiprows=1, delimiter=",") 
print(dataset)

# 資料集劃分特徵矩陣X和目標變數y
X = dataset[:,1:-1] # 每一行都要(之前已經把第一行跳過了,所以這裡全都是純資料)
y = dataset[:,-1]   # 這個是分類結果label
print('*****************')
# print(X)

print(y.shape)
# 全量資料集訓練模型
model = XGBClassifier()
model.fit(X, y)

# 變數重要性列表
print(model.feature_importances_)

# 變數重要性視覺化
pyplot.bar(range(len(model.feature_importances_)), model.feature_importances_)
pyplot.show()

# 變數重要性排序視覺化
plot_importance(model)
pyplot.show()

因為原資料保密,你們用下面的資料集data.csv也可以(看下格式就好啦~)
在這裡插入圖片描述

1.特徵值重要性圖:
在這裡插入圖片描述
2.特徵重要性排序圖:
在這裡插入圖片描述
(這裡有個不完美的地方,xgboost模組竟然沒有提供改feature name的方法!所以全是f0,f1,f2,…,你只能對照資料檔案看誰是第0個feature誰是第1個了)

想要修改f1,f2等欄位請戳這裡

相關文章