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)
#現在要實施和檢查包的效能
boruta.train=boruta(loan_status~.-loan_id,data=traindata,dotrace=2)
print(boruta.train)
plot(boruta.train, xlab = "", xaxt = "n")
lz boruta.train$imphistory[is.finite(boruta.train$imphistory[,i]),i])
names(lz) <- colnames(boruta.train$imphistory)
labels
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'))
特徵選擇演算法
特徵選擇的一般過程 從特徵全集中產生出乙個特徵子集,然後用評價函式對該特徵子集進行評價,評價的結果與停止準則進行比較,若滿足停止準則就停止,否則就繼續產生下一組特徵子集,繼續進行特徵選擇。特徵子集產生過程 generation procedure 採取一定的子集選取辦法,為評價函式提供特徵子集。根據...
特徵選擇演算法之 chisquare 演算法
chisquare特徵選擇演算法 通過計算各個特徵的卡方值,進行排序後得到。每個特徵的卡方值計算應如下 x 2 ya yb 2 yb 其中,ya是每個樣本中,ya的實際值,而yb為理想值,即假設無關成立時,理想的值。由於假設該特徵與目標特徵無關,則應當在該特徵的範圍上,目標特徵值均勻分布。例如 假設...
特徵選擇演算法之 ReliefF 演算法
relieff演算法是relief演算法的擴充套件,relief演算法只適用於兩類樣本的問題,relieff演算法可以應用到多個樣本上。relieff演算法步驟如下 現有不同類別的樣本若干,對每類樣本稱作 xn。1.從所有樣本中,隨機取出乙個樣本a。2.在與樣本a相同分類的樣本組內,取出k個最近鄰樣...