EnsekiTT Blog

EnsekiTTが書くブログです。

IrisのデータをXGBoostで解析してみる話(初回)

こんにちは、えんせきです。
また出張から帰ってきました。お外にいる時間が長かったので微妙に日焼けして、顔はほてったような感覚があります。

つまりなにしたの?

せっかく導入したXGBoostがちゃんと使えるのか試すために、機械学習Hello Worldとも言えるIrisデータ(アヤメの花弁とかのデータ)を使ってアヤメの種類がどれだけ当てられるのか試してみる。初回はデータの準備まで。
f:id:ensekitt:20180218034636j:plain
*1

前回まで

こないだ、XGBoostを無事にPyEnv環境にインストールすることが出来た。
ensekitt.hatenablog.com

方針

初回

次回

  • ハイパーパラメータ探索しつつ学習する
  • 評価する
  • 変数の重要度を可視化
  • 決定木をプロット

ensekitt.hatenablog.com

パッケージの読み込み

# 学習関連
import xgboost as xgb
from sklearn import model_selection
# 評価関連
from sklearn.metrics import confusion_matrix, classification_report

# データセット
from sklearn import datasets

# データを扱うため
import pandas as pd
import numpy as np

# 可視化関連
import matplotlib.pyplot as plt
import graphviz

データセットの読み込み

iris = datasets.load_iris()
# これだけで読み込んでくれる
iris_df = pd.DataFrame(iris.data)
iris_df = iris_df.rename(columns={
    0: 'sepal_length',
    1: 'sepal_width',
    2: 'petal_length',
    3: 'petal_width'})
iris_df['target'] = iris.target
iris_df.head()

f:id:ensekitt:20180218034021p:plain

データセットを学習用と評価用に分ける

これも便利なScikit-learnの関数を使う

train_df, test_df = model_selection.train_test_split(iris_df, test_size=0.3) # 30%をテストに使う
train_df_y = train_df[['target']]
train_df_x = train_df.copy().drop('target', axis=1)
test_df_y = test_df[['target']]
test_df_x = test_df.copy().drop('target', axis=1)

これでScikit系のFitを使うような学習に突っ込めるだけの準備が出来ました。
次回はこれを実際に学習していきたいと思います。

次回はこちら

ensekitt.hatenablog.com
次回って書いちゃったけど二回目ですね

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。