機械学習

XGBoostって何だ…【MLC#11】

こんにちは、チズチズです!

昨日まではグラフに可視化させてウオオオオとか言ってましたが、これからはモデル作りをしなければいけません。

そもそも・・・

そもそも僕は線形回帰以外のモデルを自力で実装させたことがありません。

そして… 線形回帰でモデル作ってデータをKaggleにアップして結果見たら

もうマイナスにも… もちろん終わったコンペなので順位は出ませんが、大体再開から数十位です。

Kernelを見るとほとんどに

XGBoost

と出ています。調べてみるとランダムフォレストとかが当てはまるらしいのですが、ランダムフォレストのコードは自力で書けないので、調べながらまたやります。

今日は

今日はデータの読み込みとか簡単な最初の処理はサササッと終わらせてモデルについて学ぼうと思います。

Simple Stacker LB 0.284

このコードを参考にして進めます。

これXGBoostインポートしていますが使っていませんw

他の人のコードが難しそうだったので、一旦はこれにします。

コード

ライブラリ

最下行のrgf初めて見た方多いのではないでしょうか

一応は

pip install rgf_python

でライブラリをインストールできます。

公式ドキュメント(PyPI) こちらに公式ドキュメントがあるので使い方はこちらから。

データ読み込み

ここは簡単

startswith文はある文字から始まるかどうか

例 ”chizuchizu”.startswith(“chi”)  # True

“chizuchizu”.startswith(“ccc”)  # False

ここは前回もやりました。

-1は欠損値だからNullにしちゃえっていうものです。

endswithはある文字列で終わるかどうかです。startの反対ですね。

さっき集めたcatのものですが、ここでダミー変数にしてtrainにくっつけています。

そしてカラムを消す…

それをテストデータでも同じようにします

データの量

トレーニング用約60万行

テスト用約90万行…

テストデータのほうが量が多いっていうw

テキストデータですがさすがに量が多いので、全部を一気に見ようとしたらエラー出ますw

モデル作り

こっからはモデル作りに入ります。

クラスを使っているそうです。個人的にクラスがあるコードは好きです。見やすいし書こうと思ったら関数足すだけだし…

クラス定義

呼び出すときは

n_splits = 3

stacker = log_model

base_models = (log_model, log_model2, log_model3)

Fit関数

あとで呼び出すときは

X = train

y = target_train

T = test

でした。Tが転置のTしか頭になくてtestとは思ってはいなかった…

一旦アレイを作ります。

StratifiedKFoldはデータセットの中のラベルの比率を替えずに綺麗に分割する関数です。

全て0の配列を作ります。

ここからループ… enumerateを使うことでインデックス番号(0から)と要素が同時に得られます。

モデルを読み込むのかな

もう一つzero配列を作り…

多重ループ!

分割させたデータを読み込ませ… テストデータとトレインデータ二つ変数に突っ込んで…

学習

clfはベースモデルの… 学習のパラメータとか入ってるモデルです。

そしてループで学習させる!

forループの後ですね平均取ってます

スコア取ってます。こちらも平均でスコアを表示させていますね

テストデータでも学習させれば大丈夫です。

一旦…

このコードを色々読んでわかったんですが、XGB使ってないと言っておきながら使っていました。最終的に別のやつのほうがスコアが良かっただけなのかなと思います。

もう一つが、predict_prodaという関数があります。これがもう意味不です…

もうちょっと調べてきてからもう一度続きや修正の記事を書こうと思います。

もし次書くとしたらめっちゃ丁寧に書きます。

何十時間も掛けてでも・・・

グダグダに終わりましたが…

お読みいただいてありがとうございました。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です