添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

2 R语言有哪些包可以用来实现决策树模型?

3 决策树模型挖掘的规则如何应用?

我创建了 R语言微信群 ,定位:R语言学习与实践,想加入的伙伴,请添加我的个人微信: luqin360 ,备注: R入群

一 决策树模型的原理

对决策树的原理请您先花10分钟时间阅读文章【决策树算法介绍及应用】。阅读的过程中,请解决好如下三个核心问题:

  • 如何生成决策树?
  • 如何优化决策树?
  • 如何应用决策树?
  • 如何计算信息熵?
  • 如何计算增益率?
  • 如何计算Gini值?
  • 二 R语言实现决策树模型

    1 建模流程:问题定义-数据导入-数据清洗-数据划分-构建模型-模型预测-模型评价-模型调优-模型应用

    2 使用rpart包做决策树模型

    3 使用rpart.plot包做决策树结果可视化分析

    4 模型性能评价工具:混淆矩阵

    R语言代码

    问题定义: 泰坦尼克号用户生死存亡的预测?

    Step1:导入数据集和数据检视

    set.seed( 123 )

    PATH <- './data/titanic_csv.csv'

    titanic <- read.csv( PATH )

    head (titanic)

    tail(titanic)

    shuffle.index <- sample ( 1 :nrow(titanic))

    head (shuffle.index)

    titanic <- titanic[shuffle.index,]

    head (titanic)

    class (titanic)

    Step2:数据清洗与加工

    # 清洗数据集

    # 1 删除变量集

    # 2 变量类型转换

    # 3 删除NA

    library(dplyr)

    clean.titanic <- titanic %>%

    dplyr::select(-c(home.dest, cabin, name, X, ticket)) %>%

    dplyr::mutate(pclass = factor(pclass, levels = c( 1 , 2 , 3 ), labels = c( 'Upper' , 'Middle' , 'Lower' )),

    survived = factor(survived, levels = c( 0 , 1 ), labels = c( 'No' , 'Yes' ))) %>%

    na.omit()

    dplyr::glimpse(clean.titanic)

    Step3:数据集划分

    # 数据集划分

    # 训练集和测试集

    library(caret)

    train.index <- createDataPartition(clean.titanic$survived, p = 0.8 , list = FALSE )

    train.data <- clean.titanic[train.index, ]

    test.data <- clean.titanic[-train.index, ]

    dim(train.data)

    dim(test.data)

    # 目标变量的分布

    prop.table(table(train.data$survived))

    Step4:构建决策树模型

    library(rpart)

    library(rpart.plot)

    tree.fit < - rpart (

    survived ~ . ,

    data = train.data,

    method = 'class'

    # 决策树模型结果可视化分析

    par ( mfrow = c(1,1))

    rpart.plot ( tree.fit , extra = 100)

    1 如何解读决策树模型结果?

    Step5:模型预测

    # 模型的预测

    predict.unseen <- predict(tree.fit, test.data, type = 'class' )

    Step6:模型性能评价-混淆矩阵

    # 模型评价-混淆矩阵

    table .mat <- table (test.data$survived, predict.unseen)

    table .mat

    # 模型新能评价

    # 模型准确度

    accuracy.test <- sum(diag( table .mat)) / sum( table .mat)

    print (paste( 'Accuracy for test' , accuracy.test))

    Step7:模型调优

    AccuracyTune <- function (fit) {

    predict.unseen <- predict(fit, test.data, type = 'class' )

    table .mat <- table (test.data$survived, predict.unseen)

    accuracy.test <- sum(diag( table .mat)) / sum( table .mat)

    accuracy.test

    control <- rpart.control(

    minsplit = 4 ,

    minbucket = round( 5 / 3 ),

    maxdepth = 3 ,

    cp = 0

    tune.fit <- rpart(survived ~ ., data = train.data, method = 'class' , control = control)

    print(paste('Accuracy for test', AccuracyTune(tune.fit)))

    rpart包使用 rpart.control()函数 来对决策树模型的超参数(无法从数据中学习到的参数,需要事先设定的参数)做控制。重要参数说明:

  • minsplit:算法分割之前,设置Node中最小的观察数量(样本数量)
  • minbucket:设置叶子节点最小观察数量
  • maxdepth:设置最终数的任何Node的最大深度
  • 请对该问题使用C5.0决策树算法?

    您在阅读中有什么问题,请留言。若是觉得有用,请您点赞和分享给其他朋友,感谢支持和分享。

    公众号推荐:

    (一个帮助数据人才找工作,

    帮助数据公司招人才的公众号,

    也分享数据人学习和生活的有趣事情。) 返回搜狐,查看更多

    责任编辑:

    平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。