京公网安备 11010802034615号
			经营许可证编号:京B2-20210330
		
	决策树
经验熵是针对所有样本的分类结果而言
经验条件熵是针对每个特征里每个特征样本分类结果之特征样本比例和
基尼不纯度
简单地说就是从一个数据集中随机选取子项,度量其被错误分类到其他分组里的概率

决策树算法使用轴平行分割来表现具体一定的局限性
C5.0算法--可以处理数值型和缺失 只使用最重要的特征--使用的熵度量-可以自动修剪枝
划分数据集
set.seed(123) #设置随机种子
train_sample <- sample(1000, 900)#从1000里随机900个数值
credit_train <- credit[train_sample, ]
credit_test  <- credit[-train_sample, ]
library(C50)
credit_model <- C5.0(credit_train[-17], credit_train$default) #特征数据框-标签
C5.0(train,labers,trials = 1,costs = NULL) 
trials控制自动法循环次数多迭代效果更好 costs可选矩阵 与各类型错误项对应的成本-代价矩阵
summary(credit_model)#查看模型
credit_pred <- predict(credit_model, credit_test)#预测
predict(model,test,type="class")  type取class分类结果或者prob分类概率
单规则算法(1R算法)--单一规则直观,但大数据底下,对噪声预测不准
library(RWeka)
mushroom_1R <- OneR(type ~ ., data = mushrooms)
重复增量修建算法(RIPPER) 基于1R进一步提取规则
library(RWeka)
mushroom_JRip <- JRip(type ~ ., data = mushrooms)
[plain] view plain copy
    credit <- read.csv("credit.csv")  
    str(credit)  
      
    # look at two characteristics of the applicant  
    table(credit$checking_balance)  
    table(credit$savings_balance)  
      
    # look at two characteristics of the loan  
    summary(credit$months_loan_duration)  
    summary(credit$amount)  
      
    # look at the class variable  
    table(credit$default)  
      
    # create a random sample for training and test data  
    # use set.seed to use the same random number sequence as the tutorial  
    set.seed(123)  
    #从1000里随机900个数值  
    train_sample <- sample(1000, 900)  
      
    str(train_sample)  
      
    # split the data frames切分数据集  
    credit_train <- credit[train_sample, ]  
    credit_test  <- credit[-train_sample, ]  
      
    # check the proportion of class variable类别的比例  
    prop.table(table(credit_train$default))  
    prop.table(table(credit_test$default))  
      
    ## Step 3: Training a model on the data ----  
    # build the simplest decision tree  
    library(C50)  
    credit_model <- C5.0(credit_train[-17], credit_train$default)  
      
    # display simple facts about the tree  
    credit_model  
      
    # display detailed information about the tree  
    summary(credit_model)  
      
    ## Step 4: Evaluating model performance ----  
    # create a factor vector of predictions on test data  
    credit_pred <- predict(credit_model, credit_test)  
      
    # cross tabulation of predicted versus actual classes  
    library(gmodels)  
    CrossTable(credit_test$default, credit_pred,  
               prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,  
               dnn = c('actual default', 'predicted default'))  
      
    ## Step 5: Improving model performance ----  
      
    ## Boosting the accuracy of decision trees  
    # boosted decision tree with 10 trials提高模型性能 利用boosting提升  
    credit_boost10 <- C5.0(credit_train[-17], credit_train$default,  
                           trials = 10)  
    credit_boost10  
    summary(credit_boost10)  
      
    credit_boost_pred10 <- predict(credit_boost10, credit_test)  
    CrossTable(credit_test$default, credit_boost_pred10,  
               prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,  
               dnn = c('actual default', 'predicted default'))  
      
    ## Making some mistakes more costly than others  
      
    # create dimensions for a cost matrix  
    matrix_dimensions <- list(c("no", "yes"), c("no", "yes"))  
    names(matrix_dimensions) <- c("predicted", "actual")  
    matrix_dimensions  
      
    # build the matrix设置代价矩阵  
    error_cost <- matrix(c(0, 1, 4, 0), nrow = 2, dimnames = matrix_dimensions)  
    error_cost  
      
    # apply the cost matrix to the tree  
    credit_cost <- C5.0(credit_train[-17], credit_train$default,  
                              costs = error_cost)  
    credit_cost_pred <- predict(credit_cost, credit_test)  
      
    CrossTable(credit_test$default, credit_cost_pred,  
               prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,  
               dnn = c('actual default', 'predicted default'))  
      
    #### Part 2: Rule Learners -------------------  
      
    ## Example: Identifying Poisonous Mushrooms ----  
    ## Step 2: Exploring and preparing the data ---- 自动因子转换--将字符标记为因子减少存储  
    mushrooms <- read.csv("mushrooms.csv", stringsAsFactors = TRUE)  
      
    # examine the structure of the data frame  
    str(mushrooms)  
      
    # drop the veil_type feature  
    mushrooms$veil_type <- NULL  
      
    # examine the class distribution  
    table(mushrooms$type)  
      
    ## Step 3: Training a model on the data ----  
    library(RWeka)  
      
    # train OneR() on the data  
    mushroom_1R <- OneR(type ~ ., data = mushrooms)  
      
    ## Step 4: Evaluating model performance ----  
    mushroom_1R  
    summary(mushroom_1R)  
      
    ## Step 5: Improving model performance ----  
    mushroom_JRip <- JRip(type ~ ., data = mushrooms)  
    mushroom_JRip  
    summary(mushroom_JRip)  
      
    # Rule Learner Using C5.0 Decision Trees (not in text)  
    library(C50)  
    mushroom_c5rules <- C5.0(type ~ odor + gill_size, data = mushrooms, rules = TRUE)  
    summary(mushroom_c5rules)
                  数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
教材入口:https://edu.cda.cn/goods/show/3151 “纲举目张,执本末从。” 若想在数据分析领域有所收获,一套合适的学习教材至 ...
2025-11-04【2025最新版】CDA考试教材:CDA教材一级:商业数据分析(2025)__商业数据分析_cda教材_考试教材 (cdaglobal.com) ...
2025-11-04在数字化时代,数据挖掘不再是实验室里的技术探索,而是驱动商业决策的核心能力 —— 它能从海量数据中挖掘出 “降低成本、提升 ...
2025-11-04在 DDPM(Denoising Diffusion Probabilistic Models)训练过程中,开发者最常困惑的问题莫过于:“我的模型 loss 降到多少才算 ...
2025-11-04在 CDA(Certified Data Analyst)数据分析师的工作中,“无监督样本分组” 是高频需求 —— 例如 “将用户按行为特征分为高价值 ...
2025-11-04当沃尔玛数据分析师首次发现 “啤酒与尿布” 的高频共现规律时,他们揭开了数据挖掘最迷人的面纱 —— 那些隐藏在消费行为背后 ...
2025-11-03这个问题精准切中了配对样本统计检验的核心差异点,理解二者区别是避免统计方法误用的关键。核心结论是:stats.ttest_rel(配对 ...
2025-11-03在 CDA(Certified Data Analyst)数据分析师的工作中,“高维数据的潜在规律挖掘” 是进阶需求 —— 例如用户行为包含 “浏览次 ...
2025-11-03在 MySQL 数据查询中,“按顺序计数” 是高频需求 —— 例如 “统计近 7 天每日订单量”“按用户 ID 顺序展示消费记录”“按产品 ...
2025-10-31在数据分析中,“累计百分比” 是衡量 “部分与整体关系” 的核心指标 —— 它通过 “逐步累加的占比”,直观呈现数据的分布特征 ...
2025-10-31在 CDA(Certified Data Analyst)数据分析师的工作中,“二分类预测” 是高频需求 —— 例如 “预测用户是否会流失”“判断客户 ...
2025-10-31在 MySQL 实际应用中,“频繁写入同一表” 是常见场景 —— 如实时日志存储(用户操作日志、系统运行日志)、高频交易记录(支付 ...
2025-10-30为帮助教育工作者、研究者科学分析 “班级规模” 与 “平均成绩” 的关联关系,我将从相关系数的核心定义与类型切入,详解 “数 ...
2025-10-30对 CDA(Certified Data Analyst)数据分析师而言,“相关系数” 不是简单的数字计算,而是 “从业务问题出发,量化变量间关联强 ...
2025-10-30在构建前向神经网络(Feedforward Neural Network,简称 FNN)时,“隐藏层数目设多少?每个隐藏层该放多少个神经元?” 是每个 ...
2025-10-29这个问题切中了 Excel 用户的常见困惑 —— 将 “数据可视化工具” 与 “数据挖掘算法” 的功能边界混淆。核心结论是:Excel 透 ...
2025-10-29在 CDA(Certified Data Analyst)数据分析师的工作中,“多组数据差异验证” 是高频需求 —— 例如 “3 家门店的销售额是否有显 ...
2025-10-29在数据分析中,“正态分布” 是许多统计方法(如 t 检验、方差分析、线性回归)的核心假设 —— 数据符合正态分布时,统计检验的 ...
2025-10-28箱线图(Box Plot)作为展示数据分布的核心统计图表,能直观呈现数据的中位数、四分位数、离散程度与异常值,是质量控制、实验分 ...
2025-10-28在 CDA(Certified Data Analyst)数据分析师的工作中,“分类变量关联分析” 是高频需求 —— 例如 “用户性别是否影响支付方式 ...
2025-10-28