Skip to content

Instantly share code, notes, and snippets.

@kunsen-an
Last active May 2, 2020 05:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kunsen-an/f09966dc2ab7f3975f983091c3800fb5 to your computer and use it in GitHub Desktop.
Save kunsen-an/f09966dc2ab7f3975f983091c3800fb5 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import datasets\n",
"\n",
"dataset = datasets.load_breast_cancer()\n",
"X, y = dataset.data, dataset.target"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y,\n",
" test_size=0.2,\n",
" shuffle=True,\n",
" random_state=42,\n",
" stratify=y)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import xgboost\n",
"\n",
"train_dmat = xgboost.DMatrix(X_train, label=y_train)\n",
"test_dmat = xgboost.DMatrix(X_test, label=y_test)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"evals_result = {}\n",
"\n",
"# 学習時に用いる検証用データ\n",
"evals=[\n",
" (train_dmat, 'train'),\n",
" (test_dmat, 'test'),\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# 日時を表示する関数 print_timeを戻り値とする return_callbackを定義する\n",
"import datetime\n",
"\n",
"def return_callback():\n",
" \n",
" def print_time(env):\n",
" now = datetime.datetime.now()\n",
" dt_string = now.strftime(\"%Y/%m/%d %H:%M:%S\")\n",
" i = env.iteration\n",
" if env.rank != 0 or len(env.evaluation_result_list) == 0:\n",
" print(i,dt_string)\n",
" return\n",
" msg = '\\t'.join([str(x) for x in env.evaluation_result_list])\n",
" print(i,dt_string, msg)\n",
"\n",
" return print_time\n",
"\n",
"# 日時を表示する関数をリスト callbacks にセットする\n",
"callbacks=[\n",
" return_callback()\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"train_params = {\n",
" 'objective': 'binary:logistic',\n",
" 'eval_metric': 'logloss'\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 2020/05/02 05:53:45 ('train-logloss', 0.46221)\t('test-logloss', 0.48321)\n",
"1 2020/05/02 05:53:45 ('train-logloss', 0.330034)\t('test-logloss', 0.377035)\n",
"2 2020/05/02 05:53:45 ('train-logloss', 0.246)\t('test-logloss', 0.303129)\n",
"3 2020/05/02 05:53:45 ('train-logloss', 0.185871)\t('test-logloss', 0.249715)\n",
"4 2020/05/02 05:53:45 ('train-logloss', 0.144378)\t('test-logloss', 0.223613)\n",
"5 2020/05/02 05:53:45 ('train-logloss', 0.114147)\t('test-logloss', 0.197875)\n",
"6 2020/05/02 05:53:45 ('train-logloss', 0.091335)\t('test-logloss', 0.174586)\n",
"7 2020/05/02 05:53:45 ('train-logloss', 0.075018)\t('test-logloss', 0.160585)\n",
"8 2020/05/02 05:53:45 ('train-logloss', 0.061726)\t('test-logloss', 0.14833)\n",
"9 2020/05/02 05:53:45 ('train-logloss', 0.051826)\t('test-logloss', 0.136636)\n"
]
}
],
"source": [
"booster = xgboost.train(train_params, train_dmat, \n",
" callbacks=callbacks,\n",
" # evals=evals, ... の行をコメントアウトすれば、evalsがなく、\n",
" # 検証用データの評価値はcallback関数で表示されなくなる(そもそも値がない)。\n",
" evals=evals, evals_result=evals_result,\n",
" # verbose_evalをTrueにすると evalsで指定された検証用データの評価値がラウンドごとに表示されるが\n",
" # callback の出力との区別を明確にするために Falseにしている\n",
" verbose_eval=False\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 0.9385964912280702\n"
]
}
],
"source": [
"import sklearn.metrics\n",
"import numpy \n",
"\n",
"y_pred_prob = booster.predict(test_dmat)\n",
"y_pred = numpy.where(y_pred_prob > 0.5, 1, 0)\n",
"acc = sklearn.metrics.accuracy_score(y_test, y_pred)\n",
"print('Accuracy:', acc)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"# 学習過程をプロットする\n",
"from matplotlib import pyplot as plt\n",
"\n",
"train_metric = evals_result['train']['logloss']\n",
"plt.plot(train_metric, label='train logloss')\n",
"eval_metric = evals_result['test']['logloss']\n",
"plt.plot(eval_metric, label='test logloss')\n",
"plt.grid()\n",
"plt.legend()\n",
"plt.xlabel('rounds')\n",
"plt.ylabel('logloss')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment