200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 多分类决策树 r语言_R语言——决策树模型的相关可视化

多分类决策树 r语言_R语言——决策树模型的相关可视化

时间:2023-07-30 22:11:02

相关推荐

多分类决策树 r语言_R语言——决策树模型的相关可视化

决策树是应用最广的归纳推理算法之一,它是一种逼近离散函数值的方法,通过学习析取表达式,找到针对目标的学习规则。该方法学习得到的函数被表示为一棵决策树,并且对噪声数据有很好的稳健性。在R中,有多个包可以进行决策树建模分析,其中rpart包可进行决策树模型的建立,针对获得的决策树可以使用visNetwork包进行可交互图像可视化。

针对决策树建模及可视化的示例,下面使用R在自带有的电路板印刷数据集solder,导入数据及相关包的程序如下所示:

library(rpart);library(visNetwork);library(ggpol);library(ggplot2)## 导入电路板印刷数据data("solder")head(solder)## Opening Solder Mask PadType Panel skips## 1 L Thick A1.5W410## 2 L Thick A1.5W420## 3 L Thick A1.5W430## 4 L Thick A1.5D410## 5 L Thick A1.5D420## 6 L Thick A1.5D430## 构建决策树模型set.seed(123)model ## 通过可视化参数复杂性图像进行参数选择plotcp(model)

在上面的程序中从导入的数据可发现,数据有6个特征,然后使用Opening作为类别标签建立决策树模型,针对获得的决策树模型,可以利用plotcp()函数将模型的复杂性参数进行可视化,运行程序后可获得如图1所示的图像。

图1 决策树复杂性分析

图1中每一个深度的决策树(图的上横坐标)都对应着一个复杂性程度的阈值(图的横坐标),而且每个cp取值会对一个相对误差(图的纵坐标),所以可以通过设置参数cp的取值对决策树模型进行剪枝优化。根据图中曲线的变化情况,可发现当cp取值为0.019时,模型的相对误差最低,所以可以根据该参数的取值训练新的决策树分类器,程序如下所示:

model## 设置控制树模型深度的参数control = rpart.control(cp = 0.019))visTree(model,main = "决策树模型",height = "400px",colorY=c("red","blue","green"))

上面的程序不仅获得了更好的决策树模型,还使用visTree()函数将获得的决策树进行了可视化,运行程序后可获得如图2所示的可交互图像。该图像可以通过点击查看决策的更详细的信息。

图2 可交互决策树图

针对获得的决策树模型,可以使用条形图可视化出每个变量在模型中的重要性,程序如下所示:

## 可视化每个变量的重要性varimp varimpdf impor = varimp)ggplot(varimpdf,aes(x = reorder(var,-impor), y = impor))+ geom_col(colour = "lightblue",fill = "lightblue")+labs(x="变量",y="重要性")

运行上面的程序可获得如图3所示的图像。从结果中可发现对决策树模型最重要的变量为skips变量。

图3 决策树模型变量重要性

针对决策树分类模型,可以将模型对数据集的预测结果和真实的类别进行对比,分析模型的预测精度。针对分类的精度,可以使用ggpol包中的函数geom_confmat()可视化混淆矩阵,运行下面的程序后可获得如图4所示的图像。针对该混淆矩阵热力图,可以更清楚的分析模型预测结果和真实类别标签之间的差异。例如针对L和S类的样本预测精度均较高,而针对M类的样本预测精度很低。

## 使用模型对训练集进行预测pre ## 可视化预测的混淆矩阵ggplot() + geom_confmat(aes(x = solder$Opening, y = pre), normalize = TRUE, text.perc = TRUE)+ labs(x = "Reference",y = "Prediction")+scale_fill_gradient2(low="darkblue",high="lightgreen")

图4决策树模型混淆矩阵可视化

关注我们:

QQ群:837977579

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。