楼主: hylnwoau
8979 2

[程序分享] R语言 分类决策树和回归决策树的构建(决策树的生成与剪枝) [推广有奖]

  • 0关注
  • 5粉丝

已卖:368份资源

硕士生

61%

还不是VIP/贵宾

-

威望
0
论坛币
2943 个
通用积分
22.3624
学术水平
2 点
热心指数
0 点
信用等级
0 点
经验
4549 点
帖子
60
精华
0
在线时间
263 小时
注册时间
2017-5-22
最后登录
2022-12-25

楼主
hylnwoau 发表于 2019-1-30 17:49:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

决策树

决策树(Decision Tree)是一种基本的分类和回归方法。

1、  回归树:用于预测定量数据,响应预测值取它所属的叶节点内训练集的平均响应值;

2、  分类树:用于预测定性数据,给定观测值被预测为它所属的叶节点内训练集中最常见的类别(多数表决)。

构造过程:特征选择→决策树的生成→决策树的剪枝

回归树 RSS作为确定分割点的准则

分类树 分类错误率作为确定分割点的准则

1)        分类错误率:,其中代表第m个区域的训练集中第k类所占的比例。

在实践中存在另外两个指标:

2)        基尼系数:,衡量K个类别的总方差。不难发现,当某结点的观测值几乎来自同一类别,G的值越小。

3)        信息增益(互信息):,.

###公式和图片不会添加,感兴趣的朋友可以下载附件,有详细的分析过程。

rm(list=ls())

library(tree) #加载tree包以建立分类树和回归树

data("Carseats")

attach(Carseats)

High=ifelse(Sales<=8,"No","Yes")  #创建高销量变量

Carseats=data.frame(Carseats,High)

dim(Carseats)  #400 12


tree.carseats=tree(High~.-Sales,data=Carseats)

summary(tree.carseats)


###生成####

set.seed(2)

train=sample(1:nrow(Carseats),200) #200个训练集 200个测试集

Carseats.test=Carseats[-train,] #测试数据

High.test=High[-train]


tree.carseats=tree(High~.-Sales,Carseats,subset = train)

tree.carseats


par(mfrow=c(1,1))

plot(tree.carseats)

text(tree.carseats,pretty=0)


tree.pred=predict(tree.carseats,Carseats.test,type="class")

table(tree.pred,High.test)

(86+57)/200 #测试集预测的准确率为(86+57)/200=0.715


###剪枝####

set.seed(3)

cv.carseats=cv.tree(tree.carseats,FUN=prune.misclass)

names(cv.carseats)


par(mfrow=c(1,2))

plot(cv.carseats$size,cv.carseats$dev,type="b") #错误率对树规模size的函数

plot(cv.carseats$k,cv.carseats$dev,type="b")  #错误率对复杂度k的函数


par(mfrow=c(1,1))

prune.carseats=prune.misclass(tree.carseats,best=9)

plot(prune.carseats)

text(prune.carseats,pretty=0)


tree.pred=predict(prune.carseats,Carseats.test,type="class")

table(tree.pred,High.test)

(96+60)/200 #测试集预测的准确率为(96+60)/200=0.78


#####回归树####

library(MASS)

data("Boston")

set.seed(1)

train=sample(1:nrow(Boston),nrow(Boston)/2)

tree.boston=tree(medv~.,Boston,subset=train) #房价中位数

plot(tree.boston)

text(tree.boston,pretty=0)


cv.boston=cv.tree(tree.boston)

plot(cv.boston$size,cv.boston$dev,type="b")


prune.boston=prune.tree(tree.boston,best=5)

plot(prune.boston)

text(prune.boston,pretty=0)


yhat=predict(tree.boston,newdata = Boston[-train,])

boston.test=Boston[-train,"medv"]

plot(yhat,boston.test)

abline(0,1)

mean((yhat-boston.test)^2)  #25




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:决策树 R语言 Decision Library attach R语言 机器学习 机器学习的r实现下载 R数据挖掘基础操作及算法应用案例之决策树模型 决策树模型 决策树模型

决策树.docx
下载链接: https://bbs.pinggu.org/a-2725908.html

190.75 KB

需要: 2 个论坛币  [购买]

详细分析过程

已有 1 人评分论坛币 收起 理由
cheetahfly + 30 观点有启发

总评分: 论坛币 + 30   查看全部评分

沙发
hifinecon(未真实交易用户) 发表于 2019-1-30 21:46:53

藤椅
cheetahfly(未真实交易用户) 在职认证  发表于 2019-1-31 08:20:59
谢谢分享

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 16:59