分类的R语言实现

本文介绍了使用R语言进行分类的实践,涉及决策树、朴素贝叶斯、k-近邻(knn)和神经网络。通过预处理数据,使用caret和rpart包建立决策树模型并进行剪枝,评估模型的准确率和灵敏度。接着,运用klaR包实现朴素贝叶斯分类,以及caret包训练knn模型。最后提到了神经网络在分类中的应用。
摘要由CSDN通过智能技术生成

分类----------------------决策树、贝叶斯、knn、神经网络、集成学习、随机森林

set.seed(1)
data(PimaIndiansDiabetes2,package="mlbench")
data <- PimaIndiansDiabetes2
library(caret)
#预处理
preProcValues <- preProcess(data[,-9],method=c("center","scale"))
scaleddata <- predict(preProcValues,data[,-9])
#YeoJohnson转换----------------使数据接近正态分布,并减弱异常值的影响
preProcbox <- preProcess(scaleddata,method=c("YeoJohnson"))
#最后使用装袋算法进行缺失值插补,处理后的数据集名为procdata
boxdata <- predict(preProcbox,scaleddata)
#缺失值插补
preProcimp <- preProcess(boxdata,method="bagImpute")
procdata <- predict(preProcimp,boxdata)
procdata$class <- data[,9]

###################################################3

#1、决策树模型

决策树是一种简单易用的非参数分类器

不需要对数据有任何的先验假设,计算速度较快,结果容易解释,而且稳健性强,对噪声数据和缺失数据不敏感。

分类回归树(CART)

1)从n个自变量中寻找最佳分割变量和最佳分割点,将数据划分为两组

2)repeat。直到满足某种停止条件

这样反复分割数据后,使分组后的数据变得一致,纯度较高

同时可自动探测出复杂数据的潜在结构、重要模式和关系,探测出的知识又可用来构造精确和可靠的预测模型。

建立树模型可分为分类树和回归树两种

分类树用于因变量为分类数据的情况,树的末端为因变量的分类值

回归树则可以用于因变量为连续变量的情况,树的末端可以给出相应类别中的因变量描述或预测

树模型建立的详细步骤:

1)对所有自变量和所有分割点进行评估,最佳的选择是使分割后组内的数据纯度更高,即组内数据的目标变量变异更小可通过Gini值或熵Entropy来度量

2)对树进行修剪(剪枝)

  之所以进行修剪时因为,若不加任何限制,模型会产生“过度拟合”问题,这样的模型在实际应用中毫无意义,

   而从另一个极端来看,若树的枝节太少,那么必然也会带来很大的预测误差。

   综合看来,要兼顾树的规模和误差大小,因此通常会使用CP参数(complexity parameter)来对树的复杂度进行控制,使预测误差和树的规模都尽可能小。

   CP参数类似于岭回归中的惩罚系数,数字越小越偏向于过度拟合。

   通常的做法是,先建立一个划分较细较复杂的树模型,再根据交叉检验(cross-validation)方法估计不同“剪枝”条件下各模型的误差,选择误差最小的树模型

3)输出结果,进行预测和解释

R中用rpart包中的CART算法,最重要的参数是cp,由control进行控制。

####1、决策树
library(caret)
library(rpart)
#建立决策树---把cp设置为0,是为了让模型变得复杂,方便剪枝
rpartModel <- rpart(class~.,data=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值