xgboost特徵重要性

apple-nul發表於2019-02-16

from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.datasets  import  make_hastie_10_2
from xgboost.sklearn import XGBClassifier
from xgboost import plot_importance
from matplotlib import pyplot

X, y = make_hastie_10_2(random_state=0)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)##test_size測試集合所佔比例

clf = XGBClassifier(
silent=0 ,#設定成1則沒有執行資訊輸出,最好是設定為0.是否在執行升級時列印訊息。
learning_rate= 0.3, # 如同學習率
min_child_weight=1, 
max_depth=6, # 構建樹的深度,越大越容易過擬合
gamma=0,  # 樹的葉子節點上作進一步分割槽所需的最小損失減少,越大越保守,一般0.1、0.2這樣子。
subsample=1, # 隨機取樣訓練樣本 訓練例項的子取樣比
max_delta_step=0,#最大增量步長,我們允許每個樹的權重估計。
colsample_bytree=1, # 生成樹時進行的列取樣 
reg_lambda=1,  # 控制模型複雜度的權重值的L2正則化項引數,引數越大,模型越不容易過擬合。
n_estimators=100, #樹的個數
seed=1000 #隨機種子
)

model = clf.fit(X_train,y_train,eval_metric='auc')

y_true, y_pred = y_test, clf.predict(X_test)

print("Accuracy : %.4g" % metrics.accuracy_score(y_true, y_pred))
model.fit(X, y)
print(plot_importance(model))
print(pyplot.show())

相關文章