2017-02-19 11 views
0

データフレームにフラグが「0」と「1」の列が多数あります。私はデータフレームをインポートするときにクラス "整数"に属します。Xgboost - 0と1だけの場合は、係数を係数に変換する必要がありますか?

は0を示し、1はすべての列に存在することを示す。

私はfatorsに変換する必要がありますか?[現在彼らは整数とはいえ0 & 1ほとんど似ていながらの要因はレベル1 & 2を行います]

私は後で予測モデルを構築するためにxgboost使用する予定。 Xgboostは数値列でしか使えないので、列をfactorに変換すると、それらを数値に変換するためにワンホットエンコードする必要があります。

(サイド質問:私たちは共線を削除するには1つのホットエンコーディングをすれば、我々は常に1列を削除する必要がありますか?)

+0

ないこれを求める権利フォーラムを使用するには。 [Cross Validated](http://stats.stackexchange.com)を試してみてください。 –

+0

私にお知らせいただきありがとうございます。 – Aman

+0

私は@ KarthikArumughamとは違うことを頼みますこれはSOの範囲に入るプログラミング問題です。 – abhiieor

答えて

0

短い答えは:依存します。はい、より良い変数解釈のためです。いいえ0/1変数については、整数と要素の両方が同じです。

私の個人的な意見を聞いたら、私はもっとYESに向かっています。文字列値を持つか、0と1以外の2つの整数レベルを持ついくつかのカテゴリ変数もある可能性が高いからです。前述のすべてのケースでは、0/1変数の整数と要素は同じではありません。 0/1バイナリレベルの特定のケースのみ。整数変数と要素は同じです。だから、コーディングに一貫性を持たせ、0/1のケースでもこれを採用したいと思うかもしれません。

a <- c(1,2,1,2,1,2,5) 
c<-as.character(a) 
b<-as.factor(c) 
d<-as.integer(b) 

ここで私はちょうど最後に私を与えaベクトル、一緒に遊んでいます:あなたは値が変化している理由をデバッグしたくないのであれば

> d 
[1] 1 2 1 2 1 2 3 

自分自身を表示するには

将来はas.factor()を使用してください。

回答:はい。

0

xgb.DMatrixには、データが整数であった数値が使用されています。

train[] <- lapply(train, as.numeric) 

数値の使用にデータを変換し、

xgb.DMatrix(data=data.matrix(train)) 
関連する問題