0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

XGBoost(勾配ブースティング)で癌データの検証

Posted at
#覚書
# xgboostのimportのためにしたこと
# 1. cmakeのinstall(!pip3 install cmake)
# 2. pipを最新にする
#   今のバージョン確認(!pip3 --version)
#   最新に(!pip3 install --upgrade pip)
# 3. xgboostのinstall(pip install xgboost)
#   なぜか!pip3だとimportエラーになった
#必要かわからないがやったこと(conda install libgcc)



import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import xgboost as xgb

from sklearn.datasets import load_breast_cancer
dataset = load_breast_cancer()
x = dataset.data
t = dataset.target

#XGBのモデル作成
#2値分類の時は引数にobjective="binary:logistic"を入れること
#デフォルトではmax_depthは6
model_XGB = xgb.XGBClassifier(objective="binary:logistic", max_depth=10) 

#分割方法は今回はcross_validationにする(テストデータの場所を変えていく)。交差検証。
#https://newtechnologylifestyle.net/%e6%a9%9f%e6%a2%b0%e5%ad%a6%e7%bf%92%e3%80%81%e3%83%87%e3%82%a3%e3%83%bc%e3%83%97%e3%83%a9%e3%83%bc%e3%83%8b%e3%83%b3%e3%82%b0%e3%81%a7%e3%81%ae%e5%ad%a6%e7%bf%92%e3%83%87%e3%83%bc%e3%82%bf%e3%81%a8/
#データに偏りがあった時にその効果を薄めることができる
from sklearn.model_selection import cross_validate, KFold

#cross_validationで何分割するか決める(普通は5, 10くらい)
kf = KFold(n_splits=5, shuffle=True)
#return_estimatorで重要な特徴量がどれかを後で見るためにTrueにする
score = cross_validate(model_XGB, x, t, cv=kf, scoring="accuracy", return_estimator=True)

score
#これを実行して得られるscoreの値が重要
#テストデータに対するaccuracyである。
#結果が5つあるのは交差検証で5つにしたため

#5つを平均
score["test_score"].mean()

#重要な特徴量がどれかを確認
#今回cross_validationで5つ検証したが、その一つひとつに対してその時重要だった特徴量がそれぞれ排出される。
score["estimator"][4].feature_importances_ #[]の中はcross_validationの数

#リスト内包表記で1-5を表示
[score["estimator"][i].feature_importances_ for i in range(5)]

#ただしこれだと見づらいので列で平均を取ってdf形式にする
mean_score = np.mean([score["estimator"][i].feature_importances_ for i in range(5)], axis=0)
pd.DataFrame({"説明変数": dataset.feature_names, "重要度":mean_score}).sort_values("重要度", ascending=False)

終了!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?