mlr_measures_classif.costs 与 predict_type = "prob"
mlr_measures_classif.costs with predict_type = "prob"
成本敏感度量 mlr_measures_classif.costs
需要 'response'
预测类型。
msr("classif.costs")
#<MeasureClassifCosts:classif.costs>
#* Packages: -
#* Range: [-Inf, Inf]
#* Minimize: TRUE
#* Properties: requires_task
#* Predict type: response
即使将学习者的 predict_type
设置为 'prob'
:
,此措施似乎也有效
# get a cost sensitive task
task = tsk("german_credit")
# cost matrix as given on the UCI page of the german credit data set
# https://archive.ics.uci.edu/ml/datasets/statlog+(german+credit+data)
costs = matrix(c(0, 5, 1, 0), nrow = 2)
dimnames(costs) = list(truth = task$class_names, predicted = task$class_names)
print(costs)
# mlr3 needs truth in columns, predictions in rows
costs = t(costs)
# create measure which calculates the absolute costs
m = msr("classif.costs", id = "german_credit_costs", costs = costs, normalize = FALSE)
# fit models and calculate costs
learner = lrn("classif.rpart", predict_type = "prob")
rr = resample(task, learner, rsmp("cv", folds = 3))
rr$aggregate(m)
#german_credit_costs
# 341
为什么将 predict_type
设置为 'prob'
?这是一个错误还是该度量在内部将概率转换为 classes?我猜预测 class 为正或负的阈值在内部设置为 0.5?可以更改此阈值吗?
msr("classif.costs")
使用混淆矩阵进行计算:https://github.com/mlr-org/mlr3/blob/master/R/MeasureClassifCosts.R
当 predict_type
设置为 prob
时,生成的混淆矩阵的阈值为 0.5。要在拥有重采样对象后更改它:
pred = rr$predictions()
lapply(pred, function(x) x$set_threshold(0.1)) #arbitrary threshold
rr$aggregate(m)
改回:
lapply(pred, function(x) x$set_threshold(0.5))
rr$aggregate(m)
R6 活动绑定的 "beauty"。
成本敏感度量 mlr_measures_classif.costs
需要 'response'
预测类型。
msr("classif.costs")
#<MeasureClassifCosts:classif.costs>
#* Packages: -
#* Range: [-Inf, Inf]
#* Minimize: TRUE
#* Properties: requires_task
#* Predict type: response
即使将学习者的 predict_type
设置为 'prob'
:
# get a cost sensitive task
task = tsk("german_credit")
# cost matrix as given on the UCI page of the german credit data set
# https://archive.ics.uci.edu/ml/datasets/statlog+(german+credit+data)
costs = matrix(c(0, 5, 1, 0), nrow = 2)
dimnames(costs) = list(truth = task$class_names, predicted = task$class_names)
print(costs)
# mlr3 needs truth in columns, predictions in rows
costs = t(costs)
# create measure which calculates the absolute costs
m = msr("classif.costs", id = "german_credit_costs", costs = costs, normalize = FALSE)
# fit models and calculate costs
learner = lrn("classif.rpart", predict_type = "prob")
rr = resample(task, learner, rsmp("cv", folds = 3))
rr$aggregate(m)
#german_credit_costs
# 341
为什么将 predict_type
设置为 'prob'
?这是一个错误还是该度量在内部将概率转换为 classes?我猜预测 class 为正或负的阈值在内部设置为 0.5?可以更改此阈值吗?
msr("classif.costs")
使用混淆矩阵进行计算:https://github.com/mlr-org/mlr3/blob/master/R/MeasureClassifCosts.R
当 predict_type
设置为 prob
时,生成的混淆矩阵的阈值为 0.5。要在拥有重采样对象后更改它:
pred = rr$predictions()
lapply(pred, function(x) x$set_threshold(0.1)) #arbitrary threshold
rr$aggregate(m)
改回:
lapply(pred, function(x) x$set_threshold(0.5))
rr$aggregate(m)
R6 活动绑定的 "beauty"。