2017-08-11 7 views
0

xgb.train関数を使ってRでxgboostを実行します。Rのxgb.train関数でデータを入力するには?

xgb.train機能を使用するには、xgb.DMatrix機能を使用して入力データを変換する必要があることを知っています。

しかし、私は私のデータSETMにこの機能を使用する場合、私は、エラーメッセージました:

Error in xgb.DMatrix(data = as.matrix(train)) : 
    [09:01:01] amalgamation/../dmlc-core/src/io/local_filesys.cc:66: LocalFileSystem.GetPathInfo 1 Error:No such file or directory 

以下は、私の完全なRコードです。入力データを使用するには、入力データをどのように変換するのですか?

credit<-read.csv("http://freakonometrics.free.fr/german_credit.csv", header=TRUE) 
F=c(1,2,4,5,7,8,9,10,11,12,13,15,16,17,18,19,20,21) 
for(i in F) credit[,i]=as.factor(credit[,i]) 
str(credit) 


library(caret) 
set.seed(1000) 
intrain<-createDataPartition(y=credit$Creditability, p=0.7, list=FALSE) 
train<-credit[intrain, ] 
test<-credit[-intrain, ] 

d_train<-xgb.DMatrix(data=as.matrix(train)) 
+0

(この[質問]を参照してください(https://stackoverflow.com/questions/ 38186478 /特有のインストール警告によるパッケージ間誤動作))。 'read.csv(..、colClasses =" numeric ")'を追加して、いくつかの変数を要素に変換する行を削除することができます。 – Lamia

+0

@Lamia数値変数のみを使うべきですか?次に、factor型変数の使い方は? –

+0

はい、 'xgb.DMatrix'は数値変数のみを入力として受け取りますので、それらを因子に変換するべきではありません。 – Lamia

答えて

0

ファクタを使用する場合は、ファクタをダミー変数に変換するためにmodel.matrix()関数を使用する必要があります。例えば

my.dat <- mtcars[c("mpg","cyl","disp")] 
my.dat$cyl <- as.factor(my.dat$cyl) 
# Convert data frame to X matrix 
x.train <- model.matrix(mpg~.,data=my.dat) 
head(x.train) 

出力:

    (Intercept) cyl6 cyl8 disp 
Mazda RX4     1 1 0 160 
Mazda RX4 Wag    1 1 0 160 
Datsun 710     1 0 0 108 
Hornet 4 Drive    1 1 0 258 
Hornet Sportabout   1 0 1 360 
Valiant      1 1 0 225 

これはダミー変数cyl6と4台の気筒車をベース基(cyl6=0cyl8=0)あろうcyl8を作成します。

次にあなたがxgb.DMatrix関数にこの行列を渡すことができます。どうやら、このエラーは電車の中で非数値変数を持っていることから来て

d_train<-xgb.DMatrix(x.train,label=my.dat$mpg) 
関連する問題