关闭

R:特征选择算法

2560人阅读 评论(0) 收藏 举报
分类:
library(Boruta)
traindata=read.csv("train.csv",header = T,stringsAsFactors = F)
#gsub功能被用来将一种表达式用另一种方式代替
str(traindata)
names(traindata)=gsub("_","",names(traindata))
#检查一下数据集是否有缺失值
summary(traindata)
#用NA代替所有的空白
traindata[traindata==""]=NA
#这里处理缺失值的最简单的方法,即成列删除,更先进的缺失值插补的方法和包可以在这里找到
traindata=traindata[complete.cases(traindata),]

convert=c(2:6,11:13)
traindata[,convert]=data.frame(apply(traindata[convert],2,as.factor))


#现在要实施和检查包的性能
boruta.train=Boruta(Loan_Status~.-Loan_ID,data=traindata,doTrace=2)
print(boruta.train)

plot(boruta.train, xlab = "", xaxt = "n")

lz<-lapply(1:ncol(boruta.train$ImpHistory),function(i)
  boruta.train$ImpHistory[is.finite(boruta.train$ImpHistory[,i]),i])

names(lz) <- colnames(boruta.train$ImpHistory)

Labels <- sort(sapply(lz,median))

axis(side = 1,las=2,labels = names(Labels),
     at = 1:ncol(boruta.train$ImpHistory), cex.axis =  0.7)

##蓝色的盒状图对应一个阴影属性的最小、平均和最大Z分数。红色、黄色和绿色的盒状图分别代表拒绝、暂定和确认属性的Z分数。

##现在我们对实验性属性进行判定。实验性属性将通过比较属性的Z分数中位数和最佳阴影属性的Z分数中位数被归类为确认或拒绝。让我们开始吧。

final.boruta <- TentativeRoughFix(boruta.train)
print(final.boruta)

#现在我们要得出结果了。让我们获取确认属性的列表。
getSelectedAttributes(final.boruta, withTentative = F)

#我们将创建一个来自Boruta最终结果的数据框架
boruta.df <- attStats(final.boruta)








# 加载扩展包和数据集mdrr,得到自变量集合mdrrDescr和因变量mdrrClass
library(caret)
data(mdrr)
# 先删去近似于常量的变量
zerovar <- nearZeroVar(mdrrDescr)
newdata1 <- mdrrDescr[,-zerovar]
# 再删去相关度过高的自变量
descrCorr <- cor(newdata1)
highCorr <- findCorrelation(descrCorr, 0.90)
newdata2 <- newdata1[, -highCorr]
# 数据预处理步骤(标准化,缺失值处理)
Process <- preProcess(newdata2)
newdata3 <- predict(Process, newdata2)
# 用sbf函数实施过滤方法,这里是用随机森林来评价变量的重要性
data.filter <- sbf(newdata3,mdrrClass,
                   sbfControl = sbfControl(functions=rfSBF,
                                           verbose=F,
                                           method='cv'))
# 根据上面的过滤器筛选出67个变量
x <- newdata3[data.filter$optVariables]
# 再用rfe函数实施封装方法,建立的模型仍是随机森林
profile <- rfe(x,mdrrClass,
               sizes = c(10,20,30,50,60),
               rfeControl = rfeControl(functions=rfFuncs
                                       ,method='cv'))
# 将结果绘图,发现20-30个变量的模型精度最高
plot(profile,type=c('o','g'))
1
0
查看评论

如何使用R语言的Boruta包进行特征选择

原文链接:http://dataunion.org/23013.html 作者 Debrati 引言 变量选择是模型构建的一个重要方面,每个分析人员都必须学习。毕竟,它有助于排除相关变量、偏见和不必要噪音的限制来建立预测模型。 许多分析新手认为,保持所有(或更多)的变量就能产...
  • flyfrommath
  • flyfrommath
  • 2016-04-15 21:15
  • 7232

如何使用R语言的Boruta包进行特征选择

作者 Debrati 引言 变量选择是模型构建的一个重要方面,每个分析人员都必须学习。毕竟,它有助于排除相关变量、偏见和不必要噪音的限制来建立预测模型。 许多分析新手认为,保持所有(或更多)的变量就能产生最佳的模型,因为你不会丢失任何信息。可悲的是,他们错了! 从模型中删除一个变量,增加了模...
  • LegenDavid
  • LegenDavid
  • 2016-06-13 11:33
  • 2233

特征选择和特征抽取(学习小结)

本篇博客的目的不是深刻的讲解特征提取和特征选择的方法,而是区分清楚他们之间的关系和区别,让大家对特征抽取 特征选择 PCA LDA有个概念框架上的了解,为大家的下一步的深入理解打好基础。   如果我的理解有问题,请大家提出意见,互相交流。   1.特征抽...
  • qq_26562641
  • qq_26562641
  • 2016-01-06 11:11
  • 1009

R语言利用caret包对变量重要程度排序与选择特性

说明得到监督模型后,我们可以改变输入值,比较给定模型输出效果的变化敏感程度来评估不同特征对模型的的重要性。使用caret包完成特征的筛选
  • dingming001
  • dingming001
  • 2017-06-08 08:46
  • 1839

机器学习-R-特征选择

R中关于机器学习特征选择的总结
  • tomdyq625
  • tomdyq625
  • 2015-04-12 10:34
  • 4239

caret包应用之二:特征选择

原文地址:http://xccds.github.io/2011/09/caret_24.html/ 在进行数据挖掘时,我们并不需要将所有的自变量用来建模,而是从中选择若干最重要的变量,这称为特征选择(feature selection)。一种算法就是后向选择,即先将所有的变量都包括在模型中,然后...
  • jiabiao1602
  • jiabiao1602
  • 2015-05-13 10:20
  • 1881

caret包函数不完全解析

参考:xccd ,肖凯大牛的博客 ########## caret 包总结 ########### 使用caret::mdrr 1、降维 a)删除的变量是常数自变量,或者是方差极小的自变量: nearZeroVar:诊断预测变量是唯一值(即0方差自变量) nearZeroVar(...
  • wolfbloodbj
  • wolfbloodbj
  • 2013-04-21 20:19
  • 1850

R语言筛选出变量包含某个字条的样本

R语言变量或样本选取,可用which subset grep %in%等 dat1 which 主要是通过逻辑索引为真来选取样本 dat2[which(dat2$国家 == "中华人民共和国?"),] #选择出国家名为“中华人民共和国”的那些样本 subset主...
  • qq_35242986
  • qq_35242986
  • 2017-03-30 16:33
  • 4202

基于随机森林的特征选择算法

http://xuebao.jlu.edu.cn/gxb/article/2014/1671-5497-44-1-137.html 0 引言 图像处理、信息检索以及生物信息学等技术的发展,产生了以超大规模特征为特点的高维数据集。如何有效地从高维数据中提取或选择出有用的特征信息或规...
  • SMF0504
  • SMF0504
  • 2016-07-18 09:16
  • 12715

R语言的特征选择(Feature Selection)包:Boruta和caret

转载自:http://www.zhizhihu.com/html/y2011/3188.html 对于大数据的分析,特征选择Feature Selection和降维是必不可少的,R有很多做FS的包,这里我直接转载引用两篇英文博文,很详细的讲了Boruta和caret包的使用方法和注意问题,...
  • u013524655
  • u013524655
  • 2014-11-13 14:42
  • 2296
    个人资料
    • 访问:55316次
    • 积分:1173
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:42篇
    • 译文:3篇
    • 评论:2条
    最新评论