R:特征选择算法

转载 2016年09月13日 10:28:04
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'))

相关文章推荐

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

原文链接:http://dataunion.org/23013.html 作者 Debrati 引言 变量选择是模型构建的一个重要方面,每个分析人员都必须学习。毕竟,它有助于排除相关...

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

作者 Debrati 引言 变量选择是模型构建的一个重要方面,每个分析人员都必须学习。毕竟,它有助于排除相关变量、偏见和不必要噪音的限制来建立预测模型。 许多分析新手认为,保持所有(或更多)的变...

决策树1---特征选择(信息增益)

特征的选择决定哪个特征先来划分空间。一般决策树算法特征选择通过信息增益或信息增益比来确定。ID3,C4.5的树生成通过信息增益和信息增益比概念生成。概念及理解信息增益: g(D,A)=H(D)−H(...

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

本篇博客的目的不是深刻的讲解特征提取和特征选择的方法,而是区分清楚他们之间的关系和区别,让大家对特征抽取 特征选择 PCA LDA有个概念框架上的了解,为大家的下一步的深入理解打好基础。   如果我的...

机器学习-R-特征选择

R中关于机器学习特征选择的总结

史上最全的机器学习资料(下)

摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB、Python、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Mac...
  • lipc_
  • lipc_
  • 2016年08月04日 17:19
  • 4480

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

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

一些常见的特征选择方法

现实中产生的特征维度可能很多,特征质量参差不齐,不仅会增加训练过程的时间,也可能会降低模型质量。因此,提取出最具代表性的一部分特征来参与训练就很重要了。 通常有特征抽取和特征选择两种方法。这里分别介...

caret包应用之二:特征选择

原文地址:http://xccds.github.io/2011/09/caret_24.html/ 在进行数据挖掘时,我们并不需要将所有的自变量用来建模,而是从中选择若干最重要的变量,这称为特征选...

caret包函数不完全解析

参考:xccd ,肖凯大牛的博客 ########## caret 包总结 ########### 使用caret::mdrr 1、降维 a)删除的变量是常数自变量,或者是方差极小的自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:R:特征选择算法
举报原因:
原因补充:

(最多只允许输入30个字)