Skip to content

Instantly share code, notes, and snippets.

@kengos
Created July 15, 2018 15:49
Show Gist options
  • Select an option

  • Save kengos/c49583640dd5cb3953ddc1413c4d7320 to your computer and use it in GitHub Desktop.

Select an option

Save kengos/c49583640dd5cb3953ddc1413c4d7320 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Moons データセットを使った 決定木の訓練"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"np.random.seed(42)\n",
"\n",
"%matplotlib inline\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# データセットの生成\n",
"from sklearn.datasets import make_moons\n",
"X, y = make_moons(n_samples=10000, noise=0.4, random_state=42)\n",
"\n",
"# 訓練セット, テストセットの分割\n",
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[-0.56413534 0.29283681]\n",
" [-1.16033479 0.96512577]\n",
" [-0.06598769 -0.15191052]\n",
" [-0.38613603 0.4118307 ]\n",
" [ 0.053037 0.3737536 ]\n",
" [ 0.57508824 -0.16323848]\n",
" [-0.29712957 0.47121385]\n",
" [ 0.0564801 0.44764934]\n",
" [ 0.69109639 -0.03407157]\n",
" [ 0.56185775 1.06121326]]\n"
]
}
],
"source": [
"print(X_train[:10])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0 0 1 0 1 1 0 0 0 0]\n"
]
}
],
"source": [
"print(y_train[:10])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1078c0d68>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# moons データセットを描画する\n",
"plt.plot(X_train[y_train == 1, 0], X_train[y_train == 1, 1], 'go', label=\"Positive\")\n",
"plt.plot(X_train[y_train == 0, 0], X_train[y_train == 0, 1], 'r^', label=\"Negative\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a14fbc240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# moons データセットから `1` のものを描画する\n",
"plt.plot(X_train[y_train == 1, 0], X_train[y_train == 1, 1], 'go', label=\"Positive\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a0ca55908>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# moons データセットから `0` のものを描画する\n",
"plt.plot(X_train[y_train == 0, 0], X_train[y_train == 0, 1], 'r^', label=\"Negative\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 3 folds for each of 392 candidates, totalling 1176 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=-1)]: Done 340 tasks | elapsed: 0.8s\n",
"[Parallel(n_jobs=-1)]: Done 1176 out of 1176 | elapsed: 2.4s finished\n"
]
},
{
"data": {
"text/plain": [
"GridSearchCV(cv=3, error_score='raise',\n",
" estimator=DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
" max_features=None, max_leaf_nodes=None,\n",
" min_impurity_decrease=0.0, min_impurity_split=None,\n",
" min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, presort=False, random_state=42,\n",
" splitter='best'),\n",
" fit_params=None, iid=True, n_jobs=-1,\n",
" param_grid={'criterion': ['gini'], 'max_depth': [None], 'min_samples_split': [2, 3, 4, 5], 'min_samples_leaf': [1], 'max_features': [None], 'max_leaf_nodes': [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 3..., 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99], 'min_impurity_decrease': [0]},\n",
" pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
" scoring=None, verbose=1)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# GridSearchCVで決定木の良さげなハイパーパラメータを決める\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.model_selection import GridSearchCV\n",
"\n",
"hyper_params = {\n",
" 'criterion': ['gini'], # default gini, `gini` or `entropy`\n",
" 'max_depth': [None], # default None, int\n",
" 'min_samples_split': [2, 3, 4, 5], # default 2, int\n",
" 'min_samples_leaf': [1], # default 1, int\n",
" 'max_features': [None], # default None, int\n",
" 'max_leaf_nodes': list(range(2, 100)), # default None, int\n",
" 'min_impurity_decrease': [0], # default 0, float\n",
"}\n",
"grid_search_cv = GridSearchCV(DecisionTreeClassifier(random_state=42), hyper_params, n_jobs=-1, cv= 3, verbose=1)\n",
"grid_search_cv.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
" max_features=None, max_leaf_nodes=17, min_impurity_decrease=0,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=42, splitter='best')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid_search_cv.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
" max_features=None, max_leaf_nodes=17, min_impurity_decrease=0,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=42, splitter='best')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid_search_cv.best_estimator_.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train score: 0.862875\n",
"Test score: 0.8695\n"
]
}
],
"source": [
"# テストセットを使って、スコアを見る\n",
"from sklearn.metrics import accuracy_score\n",
"\n",
"y_train_pred = grid_search_cv.best_estimator_.predict(X_train)\n",
"train_score = accuracy_score(y_train, y_train_pred)\n",
"y_pred = grid_search_cv.predict(X_test)\n",
"test_score = accuracy_score(y_test, y_pred)\n",
"\n",
"print(\"Train score: \", train_score)\n",
"print(\"Test score: \", test_score)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 決定木を複数訓練し、ランダムフォレストを実装する"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# 訓練セットを 100件ずつに分割した 1000個に分割したサブセットを作る\n",
"from sklearn.model_selection import ShuffleSplit\n",
"\n",
"subsets = []\n",
"rs = ShuffleSplit(n_splits=1000, test_size=0, train_size=100, random_state=42)\n",
"for train_index, _ in rs.split(X_train):\n",
" X_mini_train = X_train[train_index]\n",
" y_mini_train = y_train[train_index]\n",
" subsets.append((X_mini_train, y_mini_train))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.80629249999999997"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# サブセットごとに訓練する(1000個の決定木を訓練する)\n",
"from sklearn.base import clone\n",
"\n",
"forest = [clone(grid_search_cv.best_estimator_) for _ in range(1000)]\n",
"\n",
"accuracy_scores = []\n",
"\n",
"for tree, (X_mini_train, y_mini_train) in zip(forest, subsets):\n",
" tree.fit(X_mini_train, y_mini_train)\n",
" \n",
" y_pred = tree.predict(X_test)\n",
" accuracy_scores.append(accuracy_score(y_test, y_pred))\n",
"\n",
"# 単独の決定木よりも性能が低くなる\n",
"np.mean(accuracy_scores)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.875"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Y_pred = np.empty([1000, len(X_test)], dtype=np.uint8)\n",
"\n",
"for tree_index, tree in enumerate(forest):\n",
" Y_pred[tree_index] = tree.predict(X_test)\n",
"\n",
"from scipy.stats import mode\n",
"\n",
"# 複数の決定木を用いて、最も多かった予測が全体の予測とする\n",
"# 例) 1, 0, 0 という予測なら 全体としての予測は 0とする\n",
"y_pred_majority_votes, n_votes = mode(Y_pred, axis=0)\n",
"\n",
"# ほんのちょっとだが性能があがる\n",
"accuracy_score(y_test, y_pred_majority_votes.reshape([-1]))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment