python/XGBoostで機械学習モデルを作ってみた

xgboost 技術トライ系

テーブルデータを用いた、値の予測のためによく用いられる勾配ブースティング木。今回は、XGboostを用いて、簡単なテーブルデータに対して予測モデルを作ってみたので紹介します。コードはpythonです。Kaggle Codeへのリンクはこちら

ライブラリをインポートします。

import pandas as pd
import numpy as np

from xgboost import XGBClassifier as XGB
import seaborn as sns

ランダムに生成した数字を持つ500行のDataFrameを作成します。

np.random.seed()
# 中に入れる値を作る、index = 10, columns = 4
val = np.random.randint(0,100,size=2000).reshape(500,4)
columns = ["A","B","C","D"]
data = pd.DataFrame(val,columns = columns)
data

ランダムに生成したテーブルデータの概要を把握します。

data_all.describe()

テーブルデータを、教師データ(train)とテストデータ(test)に分けます。

train = data_all[:400]
test = data_all[400:]

それぞれについて、目的変数(_y)と、説明変数(_x)に分けます。

# 学習データ
train_x = train[["B","C","D"]]
train_y = train[["A"]]

# テストデータ
test_x = test[["B","C","D"]]
test_y = test[["A"]]

Xgboostのモデルを定義します。

# モデルを定義
Model = XGB(n_estimators=100, random_state=71)

学習の実行

%%time
Model.fit(train_x, train_y)

テストデータに対する予測を実行します。

pred = Model.predict(test_x)
pred

予測した値と、実際の値を比較します。

comp = pd.DataFrame()
comp["actual"] = test_y.A
comp["pred"] = pred


plot = sns.scatterplot(x=comp['actual'], y=comp["pred"])
plot = sns.scatterplot(x=comp['actual'], y=comp["actual"])
plot

今回はランダムな値を用いたので、予測精度は出ません。実際のデータに置き換えてみて、このモデルを学習させてみるとよいと思います。

210513_xgboost_prediction(Japanese)
Explore and run machine learning code with Kaggle Notebooks | Using data from no data sources

コメント

タイトルとURLをコピーしました