代碼以下所示:
# -*- coding: utf-8 -*- #導入須要的包 import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.metrics import roc_auc_score from xgboost import XGBClassifier from xgboost import plot_importance ### 加載數據集,這裏直接使用datasets包裏面的波士頓房價數據 boston=datasets.load_breast_cancer() #輸出數據集的形狀,該數據集裏面有569個樣本,每一個樣本有30個特徵(569, 30) print(boston.data.shape) #輸出標籤的個數爲 569 print(boston.target.shape) # 使用train_test_split()函數對訓練集和測試集進行劃分,第一個參數是數據集特徵,第二個參數是標籤,第三個爲測試集佔總樣本的百分比 x_train,x_test,y_train,y_test = train_test_split(boston.data, boston.target, test_size = 0.3, random_state = 33) #使用XGBoost進行訓練 model = XGBClassifier() model.fit(x_train,y_train) # 繪製重要性曲線,max_num_feature參數設置輸出前20重要的特徵() plot_importance(model,max_num_features=20) plt.show() # 輸入測試樣本作預測 y_pred=model.predict_proba(x_test)[:,1] # 輸出AUROC的值 roc=roc_auc_score(y_test,y_pred) print("The AUROC=%f",roc) """ 0.9841 """
運行結果:
其中,f2,f3,f4...這些是默認的按從0開始對特徵的編號。可是這樣的話,咱們不知道這些f2,f3到底對應的是哪些特徵。我以爲應該有函數什麼的吧,要否則的話,怎麼進行具體的分析呢。這個問題有待解決。