R语言开发之决策树了解下

决策树是以树的形式表示选择及其结果的图形,图中的节点表示事件或选择,并且图形的边缘表示决策规则或条件。

它主要用于使用R的机器学习和数据挖掘应用程序。

使用决策的例子我们可以看下。

将接收的邮件预测是否为垃圾邮件,根据这些信息中的因素,预测肿瘤是癌症或预测贷款作为良好或不良的信用风险。

通常,使用观察数据也称为训练数据创建模型,然后使用一组验证数据来验证和改进模型。

R具有用于创建和可视化决策树的包,对于新的预测变量,我们使用该模型来确定数据的类别(是/否,垃圾邮件/非垃圾邮件),在R中,R包“party”用于创建决策树,并且,包“party”中包含用于创建和分析决策树的ctree()函数,来看下语法:

ctree(formula, data)

参数描述如下:

  • formula - 是描述预测变量和响应变量的公式。
  • data - 是使用的数据集的名称。

我们可以使用一个名为readingSkills的R内置数据集创建一个决策树,大意就是,如果要知道变量:"age","shoesize","score"以及该人员是否是母语者,则描述某人员的阅读技能的得分,先来看下数据集:

# Load the party package. It will automatically load other dependent packages.
library("party")

# Print some records from data set readingSkills.
print(head(readingSkills))

输出结果为:

  nativeSpeaker age shoeSize    score
1           yes   5 24.83189 32.29385
2           yes   6 25.95238 36.63105
3            no  11 30.42170 49.60593
4           yes   7 28.66450 40.28456
5           yes  11 31.88207 55.46085
6           yes  10 30.07843 52.83124

接下来,我们就要使用ctree()函数创建决策树并查看其生成的图表,如下:

# Load the party package. It will automatically load other dependent packages.
library(party)

# Create the input data frame.
input.dat <- readingSkills[c(1:105),]

# Give the chart file a name.
png(file = "decision_tree.png")

# Create the tree.
  output.tree <- ctree(
  nativeSpeaker ~ age + shoeSize + score, 
  data = input.dat)

# Plot the tree.
plot(output.tree)

# Save the file.
dev.off()

输出的结果如下:

null device 
          1 
Loading required package: methods
Loading required package: grid
Loading required package: mvtnorm
Loading required package: modeltools
Loading required package: stats4
Loading required package: strucchange
Loading required package: zoo

Attaching package: ‘zoo’

The following objects are masked from ‘package:base’:

    as.Date, as.Date.numeric

Loading required package: sandwich

产生的图片如下:

从上面所示的决策树,我们可以得出结论:任何阅读技巧(readingSkills)评分小于38.3,年龄超过6岁的人不是本地(使用母语)演讲者。

好啦,本次记录就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。

### 使用 R 语言绘制决策树模型的 ROC 曲线、校准曲线和 DCA #### 绘制 ROC 曲线 为了在 R 中绘制决策树模型的 ROC 曲线,可以利用 `pROC` 和 `rpart` 包。以下是具体方法: 安装并加载必要的包: ```r install.packages("pROC") install.packages("rpart") library(pROC) library(rpart) ``` 创建一个简单的决策树模型,并基于该模型预测概率值: ```r fit <- rpart(Species ~ ., data=iris, method="class") pred_probabilities <- predict(fit, type = "prob")[,2] ``` 使用 `roc()` 函数来计算 ROC 数据,并用 `plot()` 来可视化它: ```r roc_curve <- roc(iris$Species == "versicolor", pred_probabilities) plot(roc_curve, main="ROC Curve for Decision Tree Model on Iris Dataset") ``` 此过程展示了如何通过指定目标类别(如 `"versicolor"`)及其对应的预测概率来进行 ROC 分析[^1]。 #### 构建校准曲线 对于校准曲线而言,可借助 `calibration` 函数来自 `caret` 包完成这项工作。下面给出一段示范代码片段用于生成此类图表: 同样先载入所需的库文件: ```r install.packages("caret") library(caret) ``` 接着定义函数以获取实际标签与预测分数之间的关系图: ```r predicted_values <- predict(fit,type='prob') actual_labels <- as.numeric(as.character(iris$Species)) - 1 cal_data <- calibration(predicted_values[,2]~ actual_labels ,data=data.frame(actual_labels,predicted_values)) plot(cal_data,col=c('blue','red'),main="Calibration Plot of Decision Tree Model") abline(a=0,b=1,lty=3,col="gray70") legend(x="topleft", legend=c("Model","Perfect Calibration"), col=c("black","gray70"), lwd=2, cex=.8) ``` 这段脚本说明了怎样对比理想状态下的完美校准线 (斜率为 1 的虚线),从而直观展示模型预测准确性的情况[^2]。 #### 执行决策曲线分析(DCA) 最后,在执行决策曲面分析方面,则推荐采用专门设计用来处理这类任务的 `dca` 函式群组,它们位于同名软件包内。这里提供了一个简单实例供参考学习: 引入相关工具集: ```r install.packages("dcurves") library(dcurves) ``` 调用适当接口实施 DCA 运算,并呈现图形化结果: ```r dca_results <- dca(response = iris$Species=="virginica", predictor = predicted_values[,3], prevalence = mean(iris$Species=="virginica")) plot_dca(dca_results, plot_type = 'net_benefit', title = "Decision Curve Analysis for Predicting Virginica Species in the Iris Data Set") ``` 上述操作指导读者了解如何针对特定类别的二元分类问题应用决策曲线分析技术,进而辅助医疗等领域中的临床实践决策支持系统开发
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值