来自
@Mr数据杨,他自己发个问题就邀请我回答,我一般是懒得回答,真要回答的话,各位看官自己看, 不是看不起 R 机器学习吗?我把Python sklearn 案例改用R mlr3verse 实现,到底哪个更简洁、优雅?说吊打,夸张吗?
Python机器学习如何正确评估分类模型的准确性?
- library(mlr3verse)
- library(tidyverse)
- dat = read_csv("titanic.csv")
- dat

删除 deck 和 alive 列,忽略缺失值,将目标变量转化为因子型:
- dat = dat %>%
- select(-c(deck, alive)) %>%
- drop_na() %>%
- mutate(survived = factor(survived))
- dat
创建任务:- task = as_task_classif(dat, target = "survived")
划分训练集、测试集:
- set.seed(1)
- split = partition(task, ratio = 0.5)
选择学习器:
Logistic 回归,超参数 maxit 指定 1000 次迭代训练
设置 predict_type="prob" 得到预测概率,以便绘制 ROC 曲线等
- learner = lrn("classif.log_reg", maxit = 1000, predict_type = "prob")
在训练集上训练模型,在测试集上做预测
- learner$train(task, row_ids = split$train)
- predictions = learner$predict(task, row_ids = split$test)
- predictions
评估模型性能- predictions$confusion # 混淆矩阵

- predictions$score(msr("classif.acc")) # 准确率
- predictions$score(msr("classif.precision")) # 查准率
- predictions$score(msr("classif.recall")) # 召回率
- predictions$score(msr("classif.fbeta")) # F1得分
- predictions$score(msr("classif.logloss")) # 对数损失
- autoplot(predictions, type = "roc")
predictions$score(msr("classif.auc")) # AUC 面积- autoplot(predictions, type = "prc")

更多 mlr3verse 机器学习框架学习内容,参阅我的知乎专栏:


雷达卡



京公网安备 11010802022788号







