如何解决在进行二进制分类时,如何解决predict中的错误:R中的下标超出范围?
我正在尝试使用R中的二进制分类来计算测试指标。我认为我的代码正确,但是我一直遇到错误。
目标是创建一个分类器,通过训练决策树模型来帮助检测给定其他变量的糖尿病。为阳性类别使用0.50的概率截止值创建分类器。
以下是我的代码:
# load packages
library("mlbench")
library("tibble")
library("rpart")
# set seed
set.seed(457)
# load data,remove NA rows,coerce to tibble
data("PimaIndiansDiabetes2")
diabetes = as_tibble(na.omit(PimaIndiansDiabetes2))
# split data
dbt_trn_idx = sample(nrow(diabetes),size = 0.8 * nrow(diabetes))
dbt_trn = diabetes[dbt_trn_idx,]
dbt_tst = diabetes[-dbt_trn_idx,]
# check data
dbt_trn
# fit models
mod_tree = rpart(diabetes ~ .,dbt_trn)
# get predicted probabilities for "positive" class,always use second alphabetically for +
prob_tree = predict(mod_tree,dbt_trn)[,"glucose"]
# create tibble of results for tree
results = tibble(
actual = dbt_tst$diabetes,prob_tree = prob_tree,)
# evaluate knn with various metrics
tree_eval = evaluate(
data = results,target_col = "actual",prediction_cols = "prob_tree",positive = "diabetes",type = "binomial",metrics = list("Accuracy" = TRUE)
cutoff = 0.5)
tree_eval
我不断收到错误消息: “ predict(mod_tree,dbt_trn)[,”葡萄糖“中的错误]: 下标超出范围”
我不确定如何解决此问题。任何帮助都会很棒!
解决方法
predict
调用的结果具有列pos
和neg
。另外,您似乎打算在测试集上进行预测。
prob_tree
的定义应如下:
prob_tree = predict(mod_tree,dbt_tst)[,"pos"]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。