2016-11-26 8 views
1

私のデータセットでboruta機能選択を実行しようとしています。R borutaパッケージ - (リスト)オブジェクトを強制的に 'double'と入力することはできません

コードは以下の通りです:

df<-read.csv('F:/DataAnalyticsClub/DACaseComp/DatasetDist/Datasets/BestFile.csv',stringsAsFactors=FALSE) 
install.packages("Boruta") 
library(Boruta) 
df[is.na(df)] <- 0 
df[df == ""] <- 0 
X<-df[ , -which(names(df) %in% c("PREVSALEDATE","PREVSALEDATE2","ClassLabel", "PARID", "PROPERTYUNIT", "PriceDiff1", "PriceDiff2", "DateDiff1", "DateDiff2", "SALEDATE"))] 
Y<-df['ClassLabel'] 



factorCols <- c("SCHOOLDESC","MUNIDESC","SALEDESC","INSTRTYPDESC","NEIGHDESC","TAXDESC","TAXSUBCODE_DESC","OWNERDESC","USEDESC","LOTAREA","CLEANGREEN","FARMSTEADFLAG","ABATEMENTFLAG","COUNTYEXEMPTBLDG","STYLEDESC","EXTFINISH_DESC","ROOFDESC","BASEMENTDESC","GRADEDESC","CONDITIONDESC","CDUDESC","HEATINGCOOLINGDESC","BSMTGARAGE") 
nonFactorCols<-c("PRICE","COUNTYTOTAL","LOCALTOTAL","FAIRMARKETTOTAL","STORIES","YEARBLT","TOTALROOMS","BEDROOMS","FULLBATHS","HALFBATHS","FIREPLACES","FINISHEDLIVINGAREA","PREVSALEPRICE","PREVSALEPRICE2") 

X[factorCols] <- lapply(X[factorCols], factor) 

set.seed(123) 
boruta.train<-Boruta(X,Y) 

だから、私はさまざまな機能のデータセットを持っていることがわかり、そのうちのいくつかは、文字列の機能ですので、私は要因に変換します。残りは数値です。 enter image description here を私はBorutaを実行したら、私は

Error in data.matrix(data.selected) : 
    (list) object cannot be coerced to type 'double' 

私がなぜわからないの取得:私は私の仮定をテストします。私のすべての列はFactorまたはvaroius数値型です。何が間違っていますか?

は少しグーグル後、私は何人かの人々がas.matrix()変換を行うことをお勧めしますことがわかったが、そのような場合:

> boruta.train<-Boruta(as.matrix(X),as.matrix(Y)) 
Error: Variable none not found. Ranger will EXIT now. 
Error in ranger::ranger(data = x, dependent.variable.name = "shadow.Boruta.decision", : 
    User interrupt or internal error. 

答えて

0

[OK]を、それで遊んでた後、私は問題を特定するために管理しました。 BorutaはY(ターゲット)がデータ型ではなくリスト型であることを要求します。

だから、このようにYを作成:

Y<-df[,'ClassLabel'] 

は、問題を解決します。

関連する問題