【问题标题】:Missing parts of Confusion Matrix in XGBoost in RR中XGBoost中混淆矩阵的缺失部分
【发布时间】:2019-09-30 02:58:47
【问题描述】:

我正在尝试从我的 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)

感谢您的帮助!

【问题讨论】:

    标签: r xgboost confusion-matrix


    【解决方案1】:

    我没有运行代码,但我想知道问题出在:

    y_pred = (y_pred > 0.5)

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

    这可能是由错误的配置模型(阅读有关 xgb 参数的更多信息)或高度不平衡的数据集(在测试集中似乎没有)引起的。

    编辑: 当然,您必须确保您的响应变量被键入为因子。此外,您应该将目标函数设置为二进制。正如我所说,我强烈建议您继续阅读有关 xgb 的基本帖子。 https://www.analyticsvidhya.com/blog/2016/01/xgboost-algorithm-easy-steps/ https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html

    【讨论】:

    • 感谢您指出这一点。确实,在 y_pred 中发生了一些特别的事情。所有值都介于 0 和 1 的 0.88 和 2 insetad 之间。你知道为什么会这样吗?我的分类值为 0 和 1,数据集适用于所有其他模型,例如 svm、knn、逻辑回归、随机森林。
    • 感谢您指出这一点。我在上面调整了我的代码,但仍然收到以下错误:“xgb.iter.update 中的错误(bst$handle,dtrain,迭代 - 1,obj):[20:33:50] amalgamation/../src/objective/ regression_obj.cu:101:标签必须在 [0,1] 中才能进行逻辑回归”现在,我的数据向量中有 0 和 1,我尝试了 as.numeric 和 as.factor。你知道该怎么做吗?感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 2022-01-05
    • 2016-05-07
    相关资源
    最近更新 更多