xgboostでは欠損が入った文字の扱いが難しい

ランニングできず 英語できず

(1) やっとPython版のxgboostが実行できた。R版は2,3日で実行できたが、Python版は参照できるサイトが少なく、自分でプログラムを作成する必要があった。悩んだのは以下の点

・xgboostが数値しか受け付けない

・データにコードの場合は、oneHotでダミー変数を作成する必要がある。

 コードに大小関係の意味を持たせないためである。

testpy.hatenablog.com

 

・文字変数が多数あり、これらを一挙に数値にエンコードにする必要がある

エンコードにはsklearnのlabelEncoderを使ったが、これが欠損だと変換しない

というわけで、欠損の場合空白に補填してから数値にエンコードした。

from sklearn import  proc

trans=proc.labelEncoder

   for j in range(data.columns):

      if(data.ix[:,j].dtype == 'object') :

          data.ix[:,j] = trans.transform(data.ix[:,j].fillna(' '))