2016-11-26 3 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

좋아, 그 주위에 재생 후 나는 문제를 식별 할 수 있었다. Boruta는 Y (대상)가 데이터 형식이 아닌 목록 형식이어야합니다.

그래서 그냥이 같은 Y를 작성 :

Y<-df[,'ClassLabel'] 

문제를 해결합니다.

관련 문제