R分类技术

本文深入探讨了R语言在分类问题上的应用,包括使用R实现的各种机器学习算法,如逻辑回归、决策树、随机森林等。通过实例分析,展示了如何预处理数据、构建分类模型以及评估模型性能,为读者提供了理解和实践R分类技术的全面指南。
摘要由CSDN通过智能技术生成
#############R分类
###什么是分类问题
###创建误差|分类混淆矩阵
cp <- read.csv("college-perf.csv")
str(cp)
#因子重新排序
dput(levels(cp$Perf))
#常规因子排序
cp$Perf <- factor(cp$Perf,levels=c("Low", "Medium","High"))
str(cp)
#顺序因子
cp$Pred <- ordered(cp$Pred,levels=c("Low", "Medium","High"))
cp$Perf <- ordered(cp$Perf,levels=c("Low", "Medium","High"))
str(cp)
#reorder()排序
# 使用函数reorder(),该函数有三个参数:因子、排序依据的数据和汇总数据的函数
# 复制一份数据
iss <- InsectSprays
iss$spray
iss$spray <- reorder(iss$spray,iss$count,FUN = mean)
iss$spray
#混淆矩阵
tab <- table(cp[,c('Perf','Pred')])
tab
#百分比
prop.table(tab)
round(prop.table(tab,1)*100,1)
#将向量转为数据框
a <- paste(round(prop.table(tab,1)*100,1),'%',sep='')
paste0(round(prop.table(tab,1)*100,1),'%')
as.data.frame(matrix(a,ncol=3,dimnames=list(Perf=c("Low", "Medium","High"),Pred=c("Low", "Medium","High"))))
#混淆矩阵可视化
barplot(tab,legend=TRUE)
mosaicplot(tab,main='prediction performance')

#在不同类别上比较模型的表现
summary(tab)

library(caret)
confusionMatrix(tab)
?confusionMatrix


###创建ROC图
library(ROCR)
dat <- read.csv("roc-example-1.csv")
head(dat)
#创建预测对象
pred <- prediction(dat$prob,dat$class)
#创建预测表现对象
?performance
perf <- performance(pred,'tpr','fpr')
#画图
old.par <- par()
par(mfrow=c(1,2))
plot(perf)
lines(par()$usr[1:2],par()$usr[3:4])
#利用基准值
perf2 <- performance(pred,'acc','cutoff')
str(perf2)
plot(perf2)
par(old.par)

#查看AUC值
performance(pred,'auc')

#找出各个真阳性比率的截断点
str(perf)
prob.cuts <- data.frame(cut=perf@alpha.values[[1]],fpr=perf@x.values[[1]],tpr=perf@y.values[[1]])
head(prob.cuts)
tail(prob.cuts)
#选择真阳性比率对应的截断值


#使用任意的分类标签
dat <- read.csv("roc-example-2.csv")
head(dat)
pred <- prediction(dat$prob,dat$class,label.ordering = c('non-buyer','buyer'))#通过传递分类标签分量明确指出标签
perf <- performance(pred,'tpr','fpr')
plot(perf)
lines(par()$usr[1:2],par()$usr[3:4])


###构建、绘制、和评估——分类树
library(rpart)
library(rpart.plot)
library(caret)
bn <- read.csv("banknote-authentication.csv")
head(bn)
str(bn)

#创建数据分块
set.seed(1000)
table(bn$class)
train.idx <- createDataPartition(bn$class,p=0.7,list=FALSE)

#创建树
?rpart
mod <- rpart(class~.,data=bn[train.idx,],method='class',control=rpart.control(minsplit=20,cp=0.01))

#查看文本输出
mod

#创建树图
prp(mod,type=4,extra=2,digits=3)
prp(mod,type=2,extra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值