R语言处理类别不平衡问题
来源:互联网 发布:淘宝网短裙 编辑:程序博客网 时间:2024/05/13 07:17
文章来源:
http://www.itnose.net/detail/6185647.html
#---------------------------------------------------##程序说明:类别不平衡问题处理#---------------------------------------------------## 加载数据,删除冒号和句号,并追加列名 hyper <-read.csv('http://archive.ics.uci.edu/ml/machine-learning-databases/thyroid-disease/hypothyroid.data', header=F) names <- read.csv('http://archive.ics.uci.edu/ml/machine-learning-databases/thyroid-disease/hypothyroid.names', header=F, sep='\t')[[1]] names <- gsub(pattern =":|[.]", replacement="", x = names) colnames(hyper)<-names # 我们将第一列的列名从 hypothyroid, negative改成target,并将negative变成0,其他值变成1. colnames(hyper)[1]<-"target" colnames(hyper) hyper$target<-ifelse(hyper$target=="negative",0,1) # 检查下阳性和阴性的结果 table(hyper$target) prop.table(table(hyper$target)) head(hyper,2) # 这数据都是因子型变量(字符型的值),这些都需要转换成二值化的数字,以方便建模: ind<-sapply(hyper,is.factor) hyper[ind]<-lapply(hyper[ind],as.character) hyper[hyper=="?"]=NA hyper[hyper=="f"]=0 hyper[hyper=="t"]=1 hyper[hyper=="n"]=0 hyper[hyper=="y"]=1 hyper[hyper=="M"]=0 hyper[hyper=="F"]=1 hyper[ind]<-lapply(hyper[ind],as.numeric) #用均值代替缺失值replaceNAWithMean<-function(x) {replace(x,is.na(x),mean(x[!is.na(x)]))} hyper<-replaceNAWithMean(hyper)#模型研究 #我们利用caret包中的createDataPartition(数据分割功能)函数将数据随机分成相同的两份。 library(caret) ## Loading required package: lattice ## Loading required package: ggplot2 set.seed(1234) splitIndex <- createDataPartition(hyper$target,time=1,p=0.5,list=FALSE) trainSplit <- hyper[splitIndex,] testSplit <- hyper[-splitIndex,] prop.table(table(trainSplit$target)) #我们利用caret包中的treebag模型算法,对训练集数据建立模型,并对测试集数据进行预测。 ctrl <- trainControl(method="cv",number=5) tbmodel <- train(target~.,data=trainSplit,method="treebag", trControl=ctrl) predictors <- names(trainSplit)[names(trainSplit)!='target'] pred <- predict(tbmodel$finalModel,testSplit[,predictors]) #为了评估模型,我们用pROC包的roc函数算auc得分和画图 library(pROC) auc<-roc(testSplit$target,pred) print(auc) plot(auc,ylim=c(0,1),print.thres=TRUE,main=paste('AUC',round(auc$auc[[1]],2))) abline(h=1,col="blue",lwd=2) abline(h=0,col="red",lwd=2) #使用SMOTE来平衡library(DMwR) trainSplit$target <- as.factor(trainSplit$target) trainSplit <- SMOTE(target~.,trainSplit,perc.over=100,perc.under=200) trainSplit$target <- as.numeric(trainSplit$target) # 我们再次用prop.table()函数检查结果的平衡性,确定我们已经让阴性、阳性数据达到相同。 prop.table(table(trainSplit$target)) # 再次建立treebag模型 tbmodel<-train(target~.,data=trainSplit,method="treebag", trControl=ctrl) predictors <- names(trainSplit)[names(trainSplit)!='target'] pred <- predict(tbmodel$finalModel,testSplit[,predictors]) auc <- roc(testSplit$target,pred) print(auc) plot(auc,ylim=c(0,1),print.thres=TRUE, main=paste('AUC',round(auc$auc[[1]],2))) abline(h=1,col="blue",lwd=2) abline(h=0,col="red",lwd=2)
0 0
- R语言处理类别不平衡问题
- 类别样本不平衡问题
- 利用R语言的DMwR包处理样本不平衡
- 处理不平衡分类问题
- 分类问题中的类别不平衡-总结
- 【R语言】问题处理
- 不平衡数据分类实证-R语言
- R语言不平衡数据分类指南
- 【译文】R语言不平衡数据分类指南
- R语言不平衡数据分类指南
- 不平衡分类问题处理方法
- 数据不平衡问题的处理
- 数据样本不平衡问题处理方法
- 多分类学习、类别不平衡
- 《西瓜书》笔记03:多分类学习和类别不平衡问题(3)
- 论文学习一:卷积神经网络中类别不平衡问题的系统研究
- 机器学习笔记(X)线性模型(VI)类别不平衡问题
- 在分类中如何处理训练集中不平衡问题
- MC9S12G定时器中断设置
- Python Numpy数组保存
- AFNetworking 3.0笔记
- Java复习(2)-面向对象
- 数据科学实战笔记1
- R语言处理类别不平衡问题
- AMBA总线概述(二)
- 获取APP后台运行状态,杀死指定APP
- git常用命令
- 注入exploit
- 对表数据进行(置顶,上移,下移,置底操作)---数据库sql
- Lua -- pairs和ipairs区别
- [补充]LCT有关细节的处理及理解
- MC9S12G时钟配置