xgboostでは欠損が入った文字の扱いが難しい
ランニングできず 英語できず
(1) やっとPython版のxgboostが実行できた。R版は2,3日で実行できたが、Python版は参照できるサイトが少なく、自分でプログラムを作成する必要があった。悩んだのは以下の点
・xgboostが数値しか受け付けない
・データにコードの場合は、oneHotでダミー変数を作成する必要がある。
コードに大小関係の意味を持たせないためである。
・文字変数が多数あり、これらを一挙に数値にエンコードにする必要がある
・エンコードには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(' '))