R 特徵選擇演算法

2021-07-22 16:42:55 字數 2299 閱讀 8924

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個最近鄰樣...