r语言c4.5算法不用包,R语言-决策树算法(C4.5和CART)的实现

本文介绍了如何使用R语言实现决策树算法,包括C4.5和CART两种方法。首先,通过sampling和party库进行数据分层抽样,创建训练集和测试集。接着,利用C4.5算法构建决策树模型,并在iris数据集上进行训练,展示模型结构。然后,使用测试集评估模型,得出C4.5算法的准确率为0.9333。此外,还探讨了CART算法的数据准备及模型构建过程,但未提供具体测试结果。
摘要由CSDN通过智能技术生成

决策树算法的实现:

一、C4.5算法的实现

a、需要的包:sampling、party

library(sampling)

library(party)

sampling用于实现数据分层随机抽样,构造训练集和测试集。

party用于实现决策树算法

另外,还可以设置随机数种子,可以获得相同的随机数。方便数据重复检验。

#设置随机数种子,可以获得相同的随机数

set.seed(100)

b、数据准备

我们使用iris数据集作为算法使用的数据集,通过下列各方法可以查看数据集的各种指标。

head(iris)

str(iris)

dim(iris)然后构造训练集和测试集

sub_train = strata(iris,

stratanames = "Species",

size = rep(35, 3),

method = "srswor")

data_train = iris[sub_train$ID_unit, ]

data_test = iris[-sub_train$ID_unit, ]抽样方法是分层不放回抽样。

c、训练模型

iris_tree = ctree(Species ~ ., data = data_train)我们可以通过方法print()或者plot()查看模型:

#查看模型

print(iris_tree)

plot(iris_tree)

plot(iris_tree,type="simple")得到的结果如下:

6371f5079caf67ce2a5257b8594401b6.png

eb443fa7bab526f44da3a0267b9d2685.pngdb8fffc5e69585ebc8e5740ef4efde3f.png

d、用测试集检验模型

test_pre = predict(iris_tree,newdata = data_test)

table(test_pre,data_test$Species)

correct = sum(as.numeric(test_pre)==as.numeric(data_test$Species))/nrow(data_test)得到的结果如下图:

0122005007359f94841c40bd93cb7e2a.png

对测试集的判断准确率0.9333。

我们也可以看一下模型对训练集的判断准确率:

table(predict(iris_tree),data_train$Species)

correct = sum(as.numeric(predict(iris_tree))==as.numeric(data_train$Species))/nrow(data_train)得到结果:

fa799cfed29b90d3c0f2d8048ac3df6f.png

准确率0.97143。

二、CART算法的实现

添加以来的包

library(xts)

library(TTR)

library(quantmod)

library(ROCR)

library(DMwR)可用于查看连续变量的相关性

#查看所有连续变量的相关性,所有分类变量的卡方值

#连续变量

idx.num=which(sapply(algae,is.numeric))

idx.num

correlation=cor(algae$a1,algae[,idx.num],use = "pairwise.complete.obs")

correlation

correlation=abs(correlation)

correlation=correlation[,order(correlation,decreasing = T)]

correlation分类变量的卡方值

# 所有分类变量的卡方值

idx.factor=which((sapply(algae, is.factor)))

idx.factor

class(idx.factor)

algae[,idx.factor]

t1=table(algae$season,algae$size)

t1

chisq.test(t1)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值