簡體   English   中英

R 中 XGBoost 中混淆矩陣的缺失部分

[英]Missing parts of Confusion Matrix in XGBoost in R

我試圖從我的 XGBoost 中獲取混淆矩陣並計算准確性。 但是,我的混淆矩陣並不完整,並且遺漏了所有錯誤區域,如下所示:

y_pred   0   1
  TRUE 526 482

因此,我無法計算准確性。 這是我的代碼:

# Splitting the dataset into the training set and test set
dataset$Good.Bad.Stock = factor(dataset$Good.Bad.Stock, levels = c(0,1))
training_set = dataset[1:2740,]
test_set = dataset[2741:3748,]
data = as.factor(as.character(training_set$Good.Bad.Stock))
data = replace(training_set$Good.Bad.Stock, is.na(training_set$Good.Bad.Stock), 0)
data

# Fitting XGBoost to the Training set
classifier_XGB = xgboost(data = as.matrix(training_set[-63]), 
                     label = data, 
                     nrounds = 15,                      
                     objective = "binary:logistic")

# Predicting the Test set results
pred_data=as.matrix(test_set[-63])
y_pred = predict(classifier_XGB, pred_data)
y_pred = (y_pred > 0.5)

# Making the Confusion Matrix
cm_XGB = table(y_pred, test_set$Good.Bad.Stock)
cm_XGB

# Evaluate Model
accuracy_XGB = (cm_XGB[1,1] + cm_XGB[2,2]) / (cm_XGB[1,1] + cm_XGB[2,2] + cm_XGB[1,2] + cm_XGB[2,1])
print(accuracy_XGB)

感謝您的幫助!

我沒有運行代碼,但我想知道問題出在:

y_pred = (y_pred > 0.5)

只需在執行此操作之前打印 y_pred,您可能會看到 1s 向量或高於 0.5 的概率。

這可能是由於配置錯誤的 model(閱讀有關 xgb 參數的更多信息)或高度不平衡的數據集(在測試集中似乎沒有)引起的。

編輯:當然,您必須確保您的響應變量被鍵入為因子。 此外,您應該將目標 function 設置為二進制。 正如我所說,我強烈建議您繼續閱讀有關 xgb 的基本帖子。 https://www.analyticsvidhya.com/blog/2016/01/xgboost-algorithm-easy-steps/ https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM