Skip to content

Instantly share code, notes, and snippets.

  • Save daikikatsuragawa/24dfd1d81d046bdae90858214dff0bb5 to your computer and use it in GitHub Desktop.
Save daikikatsuragawa/24dfd1d81d046bdae90858214dff0bb5 to your computer and use it in GitHub Desktop.
複数の反実仮想説明に基づく複数の意思決定の促進を目的としたひとつの施策の設計を支援する手法の提案
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "複数の反実仮想説明に基づく複数の意思決定の促進を目的としたひとつの施策の設計を支援する手法の提案",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyNjlln3YfbIDJRh+NkVgeaF",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/daikikatsuragawa/24dfd1d81d046bdae90858214dff0bb5/.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HJFnvWWpsNJl",
"outputId": "32c9bff6-b66b-4069-af03-6109dd0948ec"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Requirement already satisfied: dice_ml in /usr/local/lib/python3.7/dist-packages (0.7.2)\n",
"Requirement already satisfied: jsonschema in /usr/local/lib/python3.7/dist-packages (from dice_ml) (4.3.3)\n",
"Requirement already satisfied: h5py in /usr/local/lib/python3.7/dist-packages (from dice_ml) (3.1.0)\n",
"Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from dice_ml) (1.3.5)\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from dice_ml) (1.21.5)\n",
"Requirement already satisfied: scikit-learn in /usr/local/lib/python3.7/dist-packages (from dice_ml) (1.0.2)\n",
"Requirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (from dice_ml) (4.63.0)\n",
"Requirement already satisfied: cached-property in /usr/local/lib/python3.7/dist-packages (from h5py->dice_ml) (1.5.2)\n",
"Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from jsonschema->dice_ml) (4.11.3)\n",
"Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema->dice_ml) (0.18.1)\n",
"Requirement already satisfied: importlib-resources>=1.4.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema->dice_ml) (5.4.0)\n",
"Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema->dice_ml) (21.4.0)\n",
"Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from jsonschema->dice_ml) (3.10.0.2)\n",
"Requirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.7/dist-packages (from importlib-resources>=1.4.0->jsonschema->dice_ml) (3.7.0)\n",
"Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->dice_ml) (2.8.2)\n",
"Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.7/dist-packages (from pandas->dice_ml) (2018.9)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->dice_ml) (1.15.0)\n",
"Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->dice_ml) (1.1.0)\n",
"Requirement already satisfied: scipy>=1.1.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->dice_ml) (1.4.1)\n",
"Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->dice_ml) (3.1.0)\n",
"Requirement already satisfied: japanize-matplotlib in /usr/local/lib/python3.7/dist-packages (1.1.3)\n",
"Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from japanize-matplotlib) (3.2.2)\n",
"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->japanize-matplotlib) (0.11.0)\n",
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->japanize-matplotlib) (3.0.7)\n",
"Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.7/dist-packages (from matplotlib->japanize-matplotlib) (1.21.5)\n",
"Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->japanize-matplotlib) (2.8.2)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->japanize-matplotlib) (1.4.0)\n",
"Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from kiwisolver>=1.0.1->matplotlib->japanize-matplotlib) (3.10.0.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.1->matplotlib->japanize-matplotlib) (1.15.0)\n"
]
}
],
"source": [
"!pip install dice_ml\n",
"!pip install japanize-matplotlib"
]
},
{
"cell_type": "code",
"source": [
"from sklearn.cluster import AgglomerativeClustering\n",
"\n",
"def convert_to_diff_df(target_df, dice_exp):\n",
" \"\"\"\n",
" CounterfactualExplanationsをDataFrameに変換する。\n",
" \"\"\"\n",
" diff_dfs = []\n",
" for i in range(len(dice_exp.cf_examples_list)):\n",
" final_cfs_df = dice_exp.cf_examples_list[i].final_cfs_df\n",
" test_instance_df = dice_exp.cf_examples_list[i].test_instance_df\n",
" diff_df = final_cfs_df - test_instance_df\n",
" diff_dfs.append(diff_df)\n",
" diff_df = pd.concat(diff_dfs)\n",
" diff_df.index = target_df.index.to_list()\n",
" return diff_df\n",
"\n",
"\n",
"def summarize_cf(diff_df, n_clusters):\n",
" \"\"\"\n",
" 複数の反実仮想を要約するためにクラスタリングし、クラスタ列を追加する。\n",
" \"\"\"\n",
" cluster_df = diff_df.copy()\n",
" agglomerative_clustering = AgglomerativeClustering(n_clusters=n_clusters)\n",
" labels = agglomerative_clustering.fit_predict(cluster_df)\n",
" cluster_df[\"cluster\"] = labels\n",
"\n",
" return cluster_df"
],
"metadata": {
"id": "Z0w1WyqRxYzU"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"from sklearn.datasets import make_classification\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"def generate_sample_df(feature_column_names, label_column_name, n_samples, n_classes,\n",
" n_informative=10, n_redundant=5, n_clusters_per_class=5, random_state=123):\n",
" \"\"\"\n",
" サンプルデータを生成する。\n",
" \"\"\"\n",
" n_features = len(feature_column_names)\n",
" sample_classification = make_classification(\n",
" n_samples=n_samples,\n",
" n_features=n_features,\n",
" n_informative=n_informative,\n",
" n_redundant=n_redundant,\n",
" n_clusters_per_class=n_clusters_per_class, \n",
" n_classes=n_classes,\n",
" random_state=random_state\n",
" )\n",
" \n",
" sample_df = pd.DataFrame(sample_classification[0], columns = feature_column_names)\n",
" sample_df[label_column_name] = sample_classification[1]\n",
" \n",
" return sample_df\n",
"\n",
"\n",
"feature_column_names = [\n",
" 'feature_0', 'feature_1', 'feature_2', 'feature_3', 'feature_4',\n",
" 'feature_5','feature_6', 'feature_7', 'feature_8', 'feature_9', \n",
" 'feature_10', 'feature_11', 'feature_12', 'feature_13', 'feature_14',\n",
" 'feature_15', 'feature_16', 'feature_17', 'feature_18', 'feature_19'\n",
"]\n",
"label_column_name = \"label\"\n",
"n_samples = 1000\n",
"n_classes = 2\n",
"\n",
"sample_df = generate_sample_df(feature_column_names, label_column_name, n_samples, n_classes)\n",
"sample_df.head()\n",
"# sample_df.head().to_markdown()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 299
},
"id": "UabwYbfrxeY0",
"outputId": "47c8c8b4-1b55-4f6e-db1b-3cfbfc2c4d21"
},
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" feature_0 feature_1 feature_2 feature_3 feature_4 feature_5 \\\n",
"0 -6.106904 1.502213 -0.920145 3.114830 0.517572 0.066496 \n",
"1 2.905561 -2.391807 -1.986082 -0.291323 1.943493 0.609876 \n",
"2 1.381308 -2.233580 0.193688 -2.102181 0.218239 1.674535 \n",
"3 -5.768850 1.446539 -0.016582 1.063464 -0.348609 -1.761932 \n",
"4 2.106562 -0.528755 -0.662955 0.217316 0.126619 -0.501721 \n",
"\n",
" feature_6 feature_7 feature_8 feature_9 ... feature_11 feature_12 \\\n",
"0 0.819485 8.268751 -0.172542 -1.637478 ... 0.184100 -1.609332 \n",
"1 -0.707650 -0.493859 3.885051 -3.801093 ... -11.149195 -3.624020 \n",
"2 -0.932348 -4.758145 2.122818 0.527165 ... -1.124546 -0.070860 \n",
"3 -0.236788 -3.222194 0.408844 2.893135 ... 4.397214 -0.584138 \n",
"4 -0.381227 3.605042 -4.003432 -1.643297 ... -0.451738 -1.325280 \n",
"\n",
" feature_13 feature_14 feature_15 feature_16 feature_17 feature_18 \\\n",
"0 -1.304783 1.824539 0.272891 2.426740 -1.605447 3.655725 \n",
"1 4.173026 1.417897 1.712462 1.391823 -1.277529 -2.200104 \n",
"2 -0.475601 1.790642 0.042753 -0.201005 -1.145272 -2.133609 \n",
"3 -0.453076 -0.296942 -1.327871 -0.074104 -3.361249 -0.484488 \n",
"4 -1.190220 -0.282072 0.902531 1.103121 1.171147 -1.323483 \n",
"\n",
" feature_19 label \n",
"0 -2.576170 0 \n",
"1 2.040833 0 \n",
"2 0.400520 0 \n",
"3 -1.936617 0 \n",
"4 -0.249233 1 \n",
"\n",
"[5 rows x 21 columns]"
],
"text/html": [
"\n",
" <div id=\"df-3d3e51e3-6b90-4be0-8d04-fd2c24533b33\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>feature_0</th>\n",
" <th>feature_1</th>\n",
" <th>feature_2</th>\n",
" <th>feature_3</th>\n",
" <th>feature_4</th>\n",
" <th>feature_5</th>\n",
" <th>feature_6</th>\n",
" <th>feature_7</th>\n",
" <th>feature_8</th>\n",
" <th>feature_9</th>\n",
" <th>...</th>\n",
" <th>feature_11</th>\n",
" <th>feature_12</th>\n",
" <th>feature_13</th>\n",
" <th>feature_14</th>\n",
" <th>feature_15</th>\n",
" <th>feature_16</th>\n",
" <th>feature_17</th>\n",
" <th>feature_18</th>\n",
" <th>feature_19</th>\n",
" <th>label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-6.106904</td>\n",
" <td>1.502213</td>\n",
" <td>-0.920145</td>\n",
" <td>3.114830</td>\n",
" <td>0.517572</td>\n",
" <td>0.066496</td>\n",
" <td>0.819485</td>\n",
" <td>8.268751</td>\n",
" <td>-0.172542</td>\n",
" <td>-1.637478</td>\n",
" <td>...</td>\n",
" <td>0.184100</td>\n",
" <td>-1.609332</td>\n",
" <td>-1.304783</td>\n",
" <td>1.824539</td>\n",
" <td>0.272891</td>\n",
" <td>2.426740</td>\n",
" <td>-1.605447</td>\n",
" <td>3.655725</td>\n",
" <td>-2.576170</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2.905561</td>\n",
" <td>-2.391807</td>\n",
" <td>-1.986082</td>\n",
" <td>-0.291323</td>\n",
" <td>1.943493</td>\n",
" <td>0.609876</td>\n",
" <td>-0.707650</td>\n",
" <td>-0.493859</td>\n",
" <td>3.885051</td>\n",
" <td>-3.801093</td>\n",
" <td>...</td>\n",
" <td>-11.149195</td>\n",
" <td>-3.624020</td>\n",
" <td>4.173026</td>\n",
" <td>1.417897</td>\n",
" <td>1.712462</td>\n",
" <td>1.391823</td>\n",
" <td>-1.277529</td>\n",
" <td>-2.200104</td>\n",
" <td>2.040833</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.381308</td>\n",
" <td>-2.233580</td>\n",
" <td>0.193688</td>\n",
" <td>-2.102181</td>\n",
" <td>0.218239</td>\n",
" <td>1.674535</td>\n",
" <td>-0.932348</td>\n",
" <td>-4.758145</td>\n",
" <td>2.122818</td>\n",
" <td>0.527165</td>\n",
" <td>...</td>\n",
" <td>-1.124546</td>\n",
" <td>-0.070860</td>\n",
" <td>-0.475601</td>\n",
" <td>1.790642</td>\n",
" <td>0.042753</td>\n",
" <td>-0.201005</td>\n",
" <td>-1.145272</td>\n",
" <td>-2.133609</td>\n",
" <td>0.400520</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-5.768850</td>\n",
" <td>1.446539</td>\n",
" <td>-0.016582</td>\n",
" <td>1.063464</td>\n",
" <td>-0.348609</td>\n",
" <td>-1.761932</td>\n",
" <td>-0.236788</td>\n",
" <td>-3.222194</td>\n",
" <td>0.408844</td>\n",
" <td>2.893135</td>\n",
" <td>...</td>\n",
" <td>4.397214</td>\n",
" <td>-0.584138</td>\n",
" <td>-0.453076</td>\n",
" <td>-0.296942</td>\n",
" <td>-1.327871</td>\n",
" <td>-0.074104</td>\n",
" <td>-3.361249</td>\n",
" <td>-0.484488</td>\n",
" <td>-1.936617</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2.106562</td>\n",
" <td>-0.528755</td>\n",
" <td>-0.662955</td>\n",
" <td>0.217316</td>\n",
" <td>0.126619</td>\n",
" <td>-0.501721</td>\n",
" <td>-0.381227</td>\n",
" <td>3.605042</td>\n",
" <td>-4.003432</td>\n",
" <td>-1.643297</td>\n",
" <td>...</td>\n",
" <td>-0.451738</td>\n",
" <td>-1.325280</td>\n",
" <td>-1.190220</td>\n",
" <td>-0.282072</td>\n",
" <td>0.902531</td>\n",
" <td>1.103121</td>\n",
" <td>1.171147</td>\n",
" <td>-1.323483</td>\n",
" <td>-0.249233</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3d3e51e3-6b90-4be0-8d04-fd2c24533b33')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-3d3e51e3-6b90-4be0-8d04-fd2c24533b33 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-3d3e51e3-6b90-4be0-8d04-fd2c24533b33');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"source": [
"sample_df.describe()\n",
"# sample_df.describe().to_markdown()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 393
},
"id": "jLDZmIIM5bar",
"outputId": "7ecae605-1101-4b45-9bec-e2352d444222"
},
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" feature_0 feature_1 feature_2 feature_3 feature_4 \\\n",
"count 1000.000000 1000.000000 1000.000000 1000.000000 1000.000000 \n",
"mean -0.226790 -0.356719 -0.021811 0.441077 -0.012081 \n",
"std 4.658452 2.046450 2.097247 2.043332 0.988270 \n",
"min -14.650866 -8.420793 -8.042112 -7.316732 -3.701327 \n",
"25% -3.104758 -1.659532 -1.452084 -0.883971 -0.696745 \n",
"50% -0.334114 -0.450487 -0.001152 0.542740 -0.015385 \n",
"75% 2.470466 0.925326 1.376439 1.821876 0.663336 \n",
"max 18.888005 7.005068 6.926993 7.089350 3.345374 \n",
"\n",
" feature_5 feature_6 feature_7 feature_8 feature_9 ... \\\n",
"count 1000.000000 1000.000000 1000.000000 1000.000000 1000.000000 ... \n",
"mean 0.024041 0.006972 0.692381 -0.089255 -0.378420 ... \n",
"std 0.966302 1.020040 4.362567 2.063200 1.990517 ... \n",
"min -3.040581 -3.429822 -12.521151 -8.916950 -7.276979 ... \n",
"25% -0.578649 -0.662017 -2.136952 -1.352129 -1.741969 ... \n",
"50% 0.026095 0.029215 0.553981 -0.062289 -0.392014 ... \n",
"75% 0.642160 0.669061 3.549999 1.153146 0.904647 ... \n",
"max 3.345391 4.523774 14.924438 6.848339 5.732705 ... \n",
"\n",
" feature_11 feature_12 feature_13 feature_14 feature_15 \\\n",
"count 1000.000000 1000.000000 1000.000000 1000.000000 1000.000000 \n",
"mean -1.129544 0.068027 0.182109 0.865859 -0.067391 \n",
"std 3.891225 2.219099 2.080702 1.854473 2.080035 \n",
"min -12.864690 -7.271997 -6.036721 -5.456596 -6.253080 \n",
"25% -3.719651 -1.566447 -1.164253 -0.364591 -1.452980 \n",
"50% -1.218938 0.036577 0.328775 0.950246 -0.226534 \n",
"75% 1.123729 1.648326 1.662511 2.028172 1.334989 \n",
"max 11.693896 6.816838 6.880550 6.631724 6.973435 \n",
"\n",
" feature_16 feature_17 feature_18 feature_19 label \n",
"count 1000.000000 1000.000000 1000.000000 1000.000000 1000.000000 \n",
"mean -0.011046 0.329891 -0.333647 -0.555261 0.501000 \n",
"std 1.015704 3.346350 2.245693 2.659017 0.500249 \n",
"min -2.973493 -10.482561 -8.351909 -9.115579 0.000000 \n",
"25% -0.715649 -2.014435 -1.873898 -2.405652 0.000000 \n",
"50% 0.007382 0.239435 -0.334767 -0.533561 1.000000 \n",
"75% 0.673261 2.341937 1.193041 1.091228 1.000000 \n",
"max 3.263576 16.560512 8.103205 8.863442 1.000000 \n",
"\n",
"[8 rows x 21 columns]"
],
"text/html": [
"\n",
" <div id=\"df-d14eacaf-a48b-4628-95f6-b14893ab81c2\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>feature_0</th>\n",
" <th>feature_1</th>\n",
" <th>feature_2</th>\n",
" <th>feature_3</th>\n",
" <th>feature_4</th>\n",
" <th>feature_5</th>\n",
" <th>feature_6</th>\n",
" <th>feature_7</th>\n",
" <th>feature_8</th>\n",
" <th>feature_9</th>\n",
" <th>...</th>\n",
" <th>feature_11</th>\n",
" <th>feature_12</th>\n",
" <th>feature_13</th>\n",
" <th>feature_14</th>\n",
" <th>feature_15</th>\n",
" <th>feature_16</th>\n",
" <th>feature_17</th>\n",
" <th>feature_18</th>\n",
" <th>feature_19</th>\n",
" <th>label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>...</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" <td>1000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-0.226790</td>\n",
" <td>-0.356719</td>\n",
" <td>-0.021811</td>\n",
" <td>0.441077</td>\n",
" <td>-0.012081</td>\n",
" <td>0.024041</td>\n",
" <td>0.006972</td>\n",
" <td>0.692381</td>\n",
" <td>-0.089255</td>\n",
" <td>-0.378420</td>\n",
" <td>...</td>\n",
" <td>-1.129544</td>\n",
" <td>0.068027</td>\n",
" <td>0.182109</td>\n",
" <td>0.865859</td>\n",
" <td>-0.067391</td>\n",
" <td>-0.011046</td>\n",
" <td>0.329891</td>\n",
" <td>-0.333647</td>\n",
" <td>-0.555261</td>\n",
" <td>0.501000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>4.658452</td>\n",
" <td>2.046450</td>\n",
" <td>2.097247</td>\n",
" <td>2.043332</td>\n",
" <td>0.988270</td>\n",
" <td>0.966302</td>\n",
" <td>1.020040</td>\n",
" <td>4.362567</td>\n",
" <td>2.063200</td>\n",
" <td>1.990517</td>\n",
" <td>...</td>\n",
" <td>3.891225</td>\n",
" <td>2.219099</td>\n",
" <td>2.080702</td>\n",
" <td>1.854473</td>\n",
" <td>2.080035</td>\n",
" <td>1.015704</td>\n",
" <td>3.346350</td>\n",
" <td>2.245693</td>\n",
" <td>2.659017</td>\n",
" <td>0.500249</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-14.650866</td>\n",
" <td>-8.420793</td>\n",
" <td>-8.042112</td>\n",
" <td>-7.316732</td>\n",
" <td>-3.701327</td>\n",
" <td>-3.040581</td>\n",
" <td>-3.429822</td>\n",
" <td>-12.521151</td>\n",
" <td>-8.916950</td>\n",
" <td>-7.276979</td>\n",
" <td>...</td>\n",
" <td>-12.864690</td>\n",
" <td>-7.271997</td>\n",
" <td>-6.036721</td>\n",
" <td>-5.456596</td>\n",
" <td>-6.253080</td>\n",
" <td>-2.973493</td>\n",
" <td>-10.482561</td>\n",
" <td>-8.351909</td>\n",
" <td>-9.115579</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-3.104758</td>\n",
" <td>-1.659532</td>\n",
" <td>-1.452084</td>\n",
" <td>-0.883971</td>\n",
" <td>-0.696745</td>\n",
" <td>-0.578649</td>\n",
" <td>-0.662017</td>\n",
" <td>-2.136952</td>\n",
" <td>-1.352129</td>\n",
" <td>-1.741969</td>\n",
" <td>...</td>\n",
" <td>-3.719651</td>\n",
" <td>-1.566447</td>\n",
" <td>-1.164253</td>\n",
" <td>-0.364591</td>\n",
" <td>-1.452980</td>\n",
" <td>-0.715649</td>\n",
" <td>-2.014435</td>\n",
" <td>-1.873898</td>\n",
" <td>-2.405652</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.334114</td>\n",
" <td>-0.450487</td>\n",
" <td>-0.001152</td>\n",
" <td>0.542740</td>\n",
" <td>-0.015385</td>\n",
" <td>0.026095</td>\n",
" <td>0.029215</td>\n",
" <td>0.553981</td>\n",
" <td>-0.062289</td>\n",
" <td>-0.392014</td>\n",
" <td>...</td>\n",
" <td>-1.218938</td>\n",
" <td>0.036577</td>\n",
" <td>0.328775</td>\n",
" <td>0.950246</td>\n",
" <td>-0.226534</td>\n",
" <td>0.007382</td>\n",
" <td>0.239435</td>\n",
" <td>-0.334767</td>\n",
" <td>-0.533561</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2.470466</td>\n",
" <td>0.925326</td>\n",
" <td>1.376439</td>\n",
" <td>1.821876</td>\n",
" <td>0.663336</td>\n",
" <td>0.642160</td>\n",
" <td>0.669061</td>\n",
" <td>3.549999</td>\n",
" <td>1.153146</td>\n",
" <td>0.904647</td>\n",
" <td>...</td>\n",
" <td>1.123729</td>\n",
" <td>1.648326</td>\n",
" <td>1.662511</td>\n",
" <td>2.028172</td>\n",
" <td>1.334989</td>\n",
" <td>0.673261</td>\n",
" <td>2.341937</td>\n",
" <td>1.193041</td>\n",
" <td>1.091228</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>18.888005</td>\n",
" <td>7.005068</td>\n",
" <td>6.926993</td>\n",
" <td>7.089350</td>\n",
" <td>3.345374</td>\n",
" <td>3.345391</td>\n",
" <td>4.523774</td>\n",
" <td>14.924438</td>\n",
" <td>6.848339</td>\n",
" <td>5.732705</td>\n",
" <td>...</td>\n",
" <td>11.693896</td>\n",
" <td>6.816838</td>\n",
" <td>6.880550</td>\n",
" <td>6.631724</td>\n",
" <td>6.973435</td>\n",
" <td>3.263576</td>\n",
" <td>16.560512</td>\n",
" <td>8.103205</td>\n",
" <td>8.863442</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8 rows × 21 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d14eacaf-a48b-4628-95f6-b14893ab81c2')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-d14eacaf-a48b-4628-95f6-b14893ab81c2 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-d14eacaf-a48b-4628-95f6-b14893ab81c2');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"source": [
"X = sample_df.drop(columns=\"label\")\n",
"y = sample_df[\"label\"]\n",
"\n",
"train_x, test_x, train_y, test_y = train_test_split(X, y, test_size=0.2, random_state=123)\n",
"\n",
"model = LogisticRegression(random_state=123)\n",
"model.fit(train_x, train_y)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Ss20Kh-8xgfD",
"outputId": "d86698fa-b197-496c-f2bf-70f55a88be00"
},
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"LogisticRegression(random_state=123)"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"import japanize_matplotlib\n",
"from sklearn.metrics import roc_curve\n",
"\n",
"y_predict_proba = model.predict_proba(test_x)[:,1]\n",
"fpr, tpr, thresholds = roc_curve(test_y, y_predict_proba)\n",
"\n",
"plt.plot(fpr, tpr)\n",
"plt.plot([0, 1], [0, 1], 'k')\n",
"\n",
"plt.xlabel('偽陽性率')\n",
"plt.ylabel('真陽性率')\n",
"plt.title('ROC曲線')\n",
"plt.legend([\"学習済みモデル\", \"基準\"] , bbox_to_anchor=(1.05, 1), loc=\"upper left\")\n",
"plt.grid(True)\n",
"\n",
"# plt.show()\n",
"plt.savefig(\"/content/学習したモデルのROC曲線.png\", dpi=300, format=\"png\", bbox_inches='tight')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 293
},
"id": "BJcjKI49uOLW",
"outputId": "d2581f27-8a03-43ed-fa8a-632bd7074f5e"
},
"execution_count": 6,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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H3300QPPPvvsvrCwMAAOHToU1rZt20oAO3bsKFiyZMmkyZMnlwJo0aLFdoAyZcokf/nll1t37dqVv0ePHuUWLFhQvGfPnn+EhYW5xYsXF50/f36xGjVqJACsX7++0GuvvVZh7969BQ4dOpS/SZMml4eFhbkjR46EBcY3e/bsLQDp9QBUqlQpMfBywIcfflhyzZo15w8cODDNcQc7duwoeM0118QFbktMTOTee+/916BBg7ZHREQcz+zPL6gJgHOufMDy4wHL44HxwfxskbwstYV90fleR5K2tFq48k/79++nc+fOfPzxx1StWpUlS5Zw4425L7nJqKUeLIMHDy49YcKE0qnre/fuLZCSksKOHTsKTpo0qRTAE088sf+KK644UaVKlePPPPPM3sD3jxw5ssyBAwf+dufAhAkTSo4cOfKPunXrXumcIykpycLCwlzt2rWP1atXLyElJYXWrVtXmjRp0taOHTtWHDhw4O+1a9c+PmvWrKKtW7eufMMNN1w5fvz4X6tUqZLIWVi3bt351atXTzjd/iVLlhTr3r37zgMHDoQBHD9+3P7zn/9UevDBBw+eSeUPmghIJNcKr1CcZ646kedaw6HAOcfkyZNp164dBw4c4JVXXuGVV16hUKHcPbYhu7Vv335/+/bt96eujxs37oJff/214Guvvfa3me9mzZpV9ODBg2E//vjj337ABw8e/FsdOHLkyNINGjSIT0pKYsuWLee/++67FcDXgxAVFbXX/56wAgUKpMydO7dokSJFkmvXrn0cYMSIEWU++OCDX0uVKpV88cUXJwWeNywszMXHx2d42/2WLVsKfPPNNyV69uy5M639vXr1Klu3bt34smXLJh84cCBs7969BW666aYrGzdufLBbt25703pPepQAiIhko507d9KuXTumTJlCnTp1+Oabb6hZs6bXYeUJzp1+WoL169cXOXDgQIHAbTt27CiIb94ajhw5km/27Nkl3nnnnZ0zZswo1rZt211vvfXWboCYmJjiW7duLQRQunTp5Dp16hybPn16ibFjx24/fvy4dejQ4eKyZcsm3XHHHUfT+uySJUumVKpU6UR4eHjVfPl8ecBHH330a506df5qsffv37/MqFGjyo4aNWpb4cKF/1GQFStWnD979uwS06dP3wK+SxYlS5ZM6tWr14769euf1a2ASgBEconAkfUaYJf7OOcYO3YsnTt35vjx47z77rs899xz5M+vP8PnasuWLQXuu+++K5KSkuz9999Pcwbaxx57bP+p9/O/8MILFVKX169fX+ipp57aFx8fn69fv37lJk+evPV0nxd4nqSkJG6//fYjjz32WNzpjgeYNm3ar+ntr1Wr1rHly5dvLlasWJoD+erWrZswZ86cX1ITiNKlSycvWrTo57SOzSz95onkEoEj6/+6xp5w2r9RkoP8+uuvREdHM2fOHG6++WY++OADrrzySq/DyjOqVKmS+OOPP2463f677ror/q677oo/dfu77777V1d7vXr1ElJv4Zs5c+aW1ImDAFLv/U9L/vz5yajyz4xGjRpl2IpPrfyzihIAEY+c6b3yaY2sj41VApCTJScnM3jwYF566SXCwsIYNmwY0dHRWf6HXLJWYOWfl+m3UMQjqS36zNLI+txl06ZNNGjQgE6dOnHLLbewceNG2rRpo8pfcgz1AIhkg7Ra+8G8V168k5iYyDvvvMPbb79NsWLF+OSTT3jiiSdO92wUEc8oFRXJBmm19tWiz3tWr15NREQEr776Kg8//DCbNm3iP//5jyr/HGTbtm0FkpOT2b9/f1h8fHxIfzHqARBJR1bNaa/Wft6WkJDAG2+8QZ8+fShfvjxffPEFDz30kNdhhYTt27fnX7RoUZElS5YUffHFF3cDvPTSSxc9+eSTB6pWrXr80ksvTXriiScq3XPPPXH//ve/DzVp0uTypUuX/vTcc89d3LFjxz2Bt+KFGiUAIunIqjnt1drPuxYsWECrVq34+eefadWqFe+++y4XXHCB12GFjJiYmAt++eWXQj///PN5MTExFwBs27at0Ny5c4tt3LjxvLZt2+7v1avXn0uWLCncvXv3crt27SrYoEGDK7ds2XLejz/+eD7AvHnzfipatGhIDPwLpARA8qysaL2r5S6nc/jwYbp27crw4cO5/PLLmTt3LrfeeqvXYYWczp0775s1a1bRli1bloqLi8sPsH379kKDBg36/dprrz2+bdu2Am3btr2kbdu2e+fNm1f8yiuvTLjnnnviPvnkk9JNmzY9UK1atYRQrPxBCYDkYVnRelfLXdIyY8YMWrduzZ9//knnzp156623KFKkiNdheaZly5aXbNiwIUufBli9evVjY8aMyfQzBq6++upjd91112GAL7744q8umMqVKydOnDhx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5XVYIiIhT4MAJSiSk5N5//33qVGjBt9++y3Dhw9n3rx5qvxFRHII9QBIltu4cSORkZGsWLGC++67j+HDh1OxYkWvwxIRkQDqAZAsc/LkSd566y2uvfZafvnlF8aPH8+0adNU+YuI5EDqAZAs8e233xIZGcn69et5/PHHGThwIGXLlvU6LBEROQ31AMg5OXbsGP/973+54YYb2L9/P1OnTuXTTz9V5S8iksOpB0DOWmxsLK1ateKXX34hOjqad999lxIlSngdloiIZIJ6AOSMxcXF0aZNGxo1aoRzjnnz5jFixAhV/iIiuYgSADkj06dPp1q1anzwwQd06dKF77//nkaNGnkdloiInCElAJIpe/fu5YknnuCBBx6gZMmSLFu2jD59+lC4cGGvQxMRkbOgBEDS5Zzj008/JTw8nJiYGN544w1Wr17N9ddf73VoIiJyDjQIUE7rjz/+4JlnnmH69Olcf/31jB49murVq3sdloiIZAH1AMg/pKSkMHLkSKpVq8bcuXPp168fS5cuVeUvIpKHqAdA/uaXX36hVatWxMbG0qhRIz744AOqVKnidVgiIpLF1AMgACQlJdGnTx9q1KjBd999xwcffMDcuXNV+YuI5FHqARDWr19PZGQk3377LQ888ADDhg3j4osv9josEREJIvUAhLATJ07w+uuvU7t2bbZt28Znn33G1KlTVfmLiIQA9QCEqBUrVhAZGcnGjRv5z3/+w/vvv0+ZMmW8DktERLKJegBCzNGjR+ncuTM33ngjcXFxTJ8+nU8++USVv4hIiFEPQAiZN28erVq1YuvWrTzzzDP07t2b4sWLex2WiIh4QD0AIeDQoUO0atWK2267jXz58hEbG8vQoUNV+YuIhLCgJQBm1szMVprZajPrm8b+Dma23MyWmdlQM1MyEgRTp04lPDycMWPG8MILL/D9999zyy23eB2WiIh4LCiVrplVAt4G7gAigIpm1iRgfzXgAeAm59yNQFng/mDEEqr27NnDW2+9RePGjSlbtiwrVqzgnXfe4fzzz/c6NBERyQGC1eq+G5jsnItzzjlgBNA4dadzbiPwoHMu2b8pP5AQpFhCinOOTz75hKpVq7J48WLefvttVq1aRUREhNehiYhIDmK++jmLT2r2EhDvnBvoX68KvO+cu+uU4y4AhgKbnXNvnuZc0UA0QLly5ep89tlnZxVT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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"from sklearn.metrics import roc_auc_score\n",
"\n",
"auc = roc_auc_score(test_y, y_predict_proba)\n",
"auc"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "mZNbiAQvu-mo",
"outputId": "02195e73-a377-4528-90c7-5c988007731e"
},
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.8513649136892814"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"source": [
"import dice_ml\n",
"from numpy.random import seed\n",
"\n",
"\n",
"seed(123)\n",
"\n",
"target_df = test_x.copy()\n",
"y_predict = model.predict(test_x)\n",
"target_df[\"label\"] = y_predict\n",
"pre_counter = target_df.query('label == 0')\n",
"pre_counter = pre_counter.drop(columns=\"label\")\n",
"\n",
"d = dice_ml.Data(dataframe = pd.concat([test_x, test_y], axis=1),\n",
" continuous_features=[], \n",
" outcome_name = \"label\",\n",
" random_seed=123\n",
" )\n",
"\n",
"m = dice_ml.Model(model=model, \n",
" backend=\"sklearn\")\n",
"\n",
"exp = dice_ml.Dice(d, m, method='random')\n",
"\n",
"dice_exp = exp.generate_counterfactuals(\n",
" pre_counter,\n",
" total_CFs= 1,\n",
" features_to_vary=pre_counter.columns.to_list(),\n",
" desired_class = 1,\n",
" random_seed=123\n",
")\n",
"\n",
"diff_df = convert_to_diff_df(pre_counter, dice_exp)\n",
"diff_df = diff_df.drop(columns=\"label\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "qJNAOBymxsw2",
"outputId": "61787f67-3af4-4684-a54b-4a35cd1e0461"
},
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"100%|██████████| 99/99 [00:14<00:00, 6.87it/s]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"n_clusters = 10\n",
"summarized_cf = summarize_cf(diff_df, n_clusters)\n",
"summarized_cf.head()\n",
"# summarized_cf.head().to_markdown()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 299
},
"id": "AR5B1DqOqSHj",
"outputId": "e30c7d6f-eb8a-42b0-90af-dff9afd16f00"
},
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" feature_0 feature_1 feature_2 feature_3 feature_4 feature_5 \\\n",
"203 20.450463 0.000000 0.000000 0.0 0.0 0.0 \n",
"632 0.000000 0.000000 0.000000 0.0 0.0 0.0 \n",
"461 0.000000 0.000000 -3.757034 0.0 0.0 0.0 \n",
"924 0.000000 -4.993639 0.000000 0.0 0.0 0.0 \n",
"195 0.000000 0.000000 0.000000 0.0 0.0 0.0 \n",
"\n",
" feature_6 feature_7 feature_8 feature_9 ... feature_11 feature_12 \\\n",
"203 0.0 0.0 0.00000 0.000000 ... 0.0 0.000000 \n",
"632 0.0 0.0 0.00000 0.000000 ... 0.0 -5.710253 \n",
"461 0.0 0.0 0.00000 0.000000 ... 0.0 0.000000 \n",
"924 0.0 0.0 0.00000 -2.870603 ... 0.0 -6.788102 \n",
"195 0.0 0.0 -5.20829 0.000000 ... 0.0 -5.710969 \n",
"\n",
" feature_13 feature_14 feature_15 feature_16 feature_17 feature_18 \\\n",
"203 0.0 0.000000 0.0 0.0 0.0 0.0 \n",
"632 0.0 0.000000 0.0 0.0 0.0 0.0 \n",
"461 0.0 -0.720825 0.0 0.0 0.0 0.0 \n",
"924 0.0 0.000000 0.0 0.0 0.0 0.0 \n",
"195 0.0 0.000000 0.0 0.0 0.0 0.0 \n",
"\n",
" feature_19 cluster \n",
"203 0.0 5 \n",
"632 0.0 6 \n",
"461 0.0 1 \n",
"924 0.0 6 \n",
"195 0.0 6 \n",
"\n",
"[5 rows x 21 columns]"
],
"text/html": [
"\n",
" <div id=\"df-0ea7c762-220b-45c4-a474-469375078b5c\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>feature_0</th>\n",
" <th>feature_1</th>\n",
" <th>feature_2</th>\n",
" <th>feature_3</th>\n",
" <th>feature_4</th>\n",
" <th>feature_5</th>\n",
" <th>feature_6</th>\n",
" <th>feature_7</th>\n",
" <th>feature_8</th>\n",
" <th>feature_9</th>\n",
" <th>...</th>\n",
" <th>feature_11</th>\n",
" <th>feature_12</th>\n",
" <th>feature_13</th>\n",
" <th>feature_14</th>\n",
" <th>feature_15</th>\n",
" <th>feature_16</th>\n",
" <th>feature_17</th>\n",
" <th>feature_18</th>\n",
" <th>feature_19</th>\n",
" <th>cluster</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>203</th>\n",
" <td>20.450463</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>632</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>-5.710253</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>461</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-3.757034</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>-0.720825</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>924</th>\n",
" <td>0.000000</td>\n",
" <td>-4.993639</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00000</td>\n",
" <td>-2.870603</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>-6.788102</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>195</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>-5.20829</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>-5.710969</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0ea7c762-220b-45c4-a474-469375078b5c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-0ea7c762-220b-45c4-a474-469375078b5c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-0ea7c762-220b-45c4-a474-469375078b5c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"source": [
"target_cluster = 1\n",
"summarized_cf[summarized_cf[\"cluster\"] == target_cluster].describe()\n",
"# summarized_cf[summarized_cf[\"cluster\"] == target_cluster].describe().to_markdown()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 393
},
"id": "1tbGus0zq7l6",
"outputId": "06027b8a-9a2e-43a8-c4c3-965a81c869c3"
},
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" feature_0 feature_1 feature_2 feature_3 feature_4 feature_5 \\\n",
"count 28.000000 28.000000 28.000000 28.0 28.000000 28.0 \n",
"mean 0.233017 -0.508917 -0.268749 0.0 -0.028844 0.0 \n",
"std 0.893541 1.380063 0.845130 0.0 0.152626 0.0 \n",
"min 0.000000 -5.995541 -3.757034 0.0 -0.807619 0.0 \n",
"25% 0.000000 0.000000 0.000000 0.0 0.000000 0.0 \n",
"50% 0.000000 0.000000 0.000000 0.0 0.000000 0.0 \n",
"75% 0.000000 0.000000 0.000000 0.0 0.000000 0.0 \n",
"max 4.209110 0.000000 0.000000 0.0 0.000000 0.0 \n",
"\n",
" feature_6 feature_7 feature_8 feature_9 ... feature_11 \\\n",
"count 28.000000 28.000000 28.000000 28.000000 ... 28.000000 \n",
"mean -0.008005 0.121135 -0.559367 -0.801306 ... 0.135230 \n",
"std 0.042359 0.479200 1.181125 1.793571 ... 0.676244 \n",
"min -0.224145 0.000000 -3.826670 -6.525970 ... 0.000000 \n",
"25% 0.000000 0.000000 0.000000 0.000000 ... 0.000000 \n",
"50% 0.000000 0.000000 0.000000 0.000000 ... 0.000000 \n",
"75% 0.000000 0.000000 0.000000 0.000000 ... 0.000000 \n",
"max 0.000000 2.351204 0.000000 0.000000 ... 3.580041 \n",
"\n",
" feature_12 feature_13 feature_14 feature_15 feature_16 feature_17 \\\n",
"count 28.000000 28.000000 28.000000 28.000000 28.000000 28.000000 \n",
"mean -0.319066 -0.581926 -0.361943 -0.290826 0.057223 -0.156652 \n",
"std 0.839099 1.749381 1.051225 1.171157 0.260180 0.583733 \n",
"min -3.372416 -6.576984 -4.513757 -5.838830 0.000000 -2.558903 \n",
"25% 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"50% 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"75% 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"max 0.000000 0.000000 0.000000 0.000000 1.364960 0.000000 \n",
"\n",
" feature_18 feature_19 cluster \n",
"count 28.000000 28.000000 28.0 \n",
"mean 0.060228 0.000341 1.0 \n",
"std 0.318697 0.001803 0.0 \n",
"min 0.000000 0.000000 1.0 \n",
"25% 0.000000 0.000000 1.0 \n",
"50% 0.000000 0.000000 1.0 \n",
"75% 0.000000 0.000000 1.0 \n",
"max 1.686386 0.009538 1.0 \n",
"\n",
"[8 rows x 21 columns]"
],
"text/html": [
"\n",
" <div id=\"df-be86963a-8b2f-434f-8dd8-7d8e14b8c27b\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>feature_0</th>\n",
" <th>feature_1</th>\n",
" <th>feature_2</th>\n",
" <th>feature_3</th>\n",
" <th>feature_4</th>\n",
" <th>feature_5</th>\n",
" <th>feature_6</th>\n",
" <th>feature_7</th>\n",
" <th>feature_8</th>\n",
" <th>feature_9</th>\n",
" <th>...</th>\n",
" <th>feature_11</th>\n",
" <th>feature_12</th>\n",
" <th>feature_13</th>\n",
" <th>feature_14</th>\n",
" <th>feature_15</th>\n",
" <th>feature_16</th>\n",
" <th>feature_17</th>\n",
" <th>feature_18</th>\n",
" <th>feature_19</th>\n",
" <th>cluster</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.0</td>\n",
" <td>28.000000</td>\n",
" <td>28.0</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>...</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.000000</td>\n",
" <td>28.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.233017</td>\n",
" <td>-0.508917</td>\n",
" <td>-0.268749</td>\n",
" <td>0.0</td>\n",
" <td>-0.028844</td>\n",
" <td>0.0</td>\n",
" <td>-0.008005</td>\n",
" <td>0.121135</td>\n",
" <td>-0.559367</td>\n",
" <td>-0.801306</td>\n",
" <td>...</td>\n",
" <td>0.135230</td>\n",
" <td>-0.319066</td>\n",
" <td>-0.581926</td>\n",
" <td>-0.361943</td>\n",
" <td>-0.290826</td>\n",
" <td>0.057223</td>\n",
" <td>-0.156652</td>\n",
" <td>0.060228</td>\n",
" <td>0.000341</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.893541</td>\n",
" <td>1.380063</td>\n",
" <td>0.845130</td>\n",
" <td>0.0</td>\n",
" <td>0.152626</td>\n",
" <td>0.0</td>\n",
" <td>0.042359</td>\n",
" <td>0.479200</td>\n",
" <td>1.181125</td>\n",
" <td>1.793571</td>\n",
" <td>...</td>\n",
" <td>0.676244</td>\n",
" <td>0.839099</td>\n",
" <td>1.749381</td>\n",
" <td>1.051225</td>\n",
" <td>1.171157</td>\n",
" <td>0.260180</td>\n",
" <td>0.583733</td>\n",
" <td>0.318697</td>\n",
" <td>0.001803</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000</td>\n",
" <td>-5.995541</td>\n",
" <td>-3.757034</td>\n",
" <td>0.0</td>\n",
" <td>-0.807619</td>\n",
" <td>0.0</td>\n",
" <td>-0.224145</td>\n",
" <td>0.000000</td>\n",
" <td>-3.826670</td>\n",
" <td>-6.525970</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>-3.372416</td>\n",
" <td>-6.576984</td>\n",
" <td>-4.513757</td>\n",
" <td>-5.838830</td>\n",
" <td>0.000000</td>\n",
" <td>-2.558903</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>4.209110</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>2.351204</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>3.580041</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.364960</td>\n",
" <td>0.000000</td>\n",
" <td>1.686386</td>\n",
" <td>0.009538</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8 rows × 21 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-be86963a-8b2f-434f-8dd8-7d8e14b8c27b')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-be86963a-8b2f-434f-8dd8-7d8e14b8c27b button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-be86963a-8b2f-434f-8dd8-7d8e14b8c27b');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 10
}
]
},
{
"cell_type": "code",
"source": [
"changes = {}\n",
"for n_clusters in range(1, 21):\n",
" summarized_cf = summarize_cf(diff_df, n_clusters)\n",
" changes[n_clusters] = []\n",
" for n_cluster in range(n_clusters):\n",
" cluster_df = summarized_cf[summarized_cf[\"cluster\"] == n_cluster]\n",
" cluster_described = cluster_df.describe().T\n",
" cluster_filtered = cluster_described[(cluster_described['min'] != 0) | (cluster_described['max'] != 0)]\n",
" changes[n_clusters].append(len(cluster_filtered))\n",
"\n",
"fig, ax = plt.subplots()\n",
"bp = ax.boxplot(changes.values(), medianprops = {\"color\" : \"black\", \"linewidth\" : 1.5})\n",
"ax.set_xticklabels(changes.keys())\n",
"ax.set_yticks(np.arange(0, 21, 5))\n",
"\n",
"plt.title('クラスタの数の変化に伴う参考にする特徴の数の変化')\n",
"plt.xlabel('クラスタの数')\n",
"plt.ylabel('参考にする特徴の数')\n",
"plt.grid(True)\n",
"\n",
"plt.show()\n",
"# plt.savefig(\"/content/クラスタの数の変化に伴う参考にする特徴の数の変化.png\", dpi=300, format=\"png\", bbox_inches='tight')"
],
"metadata": {
"id": "GI3WI8o92Oug",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 347
},
"outputId": "bf1f258a-5044-44cf-9fa2-0f75354a4a8c"
},
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.7/dist-packages/matplotlib/cbook/__init__.py:1376: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n",
" X = np.atleast_1d(X.T if isinstance(X, np.ndarray) else np.asarray(X))\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"changes = {}\n",
"for n_clusters in range(1, 21):\n",
" summarized_cf = summarize_cf(diff_df, n_clusters)\n",
" changes[n_clusters] = []\n",
" for n_cluster in range(n_clusters):\n",
" cluster_df = summarized_cf[summarized_cf[\"cluster\"] == n_cluster]\n",
" cluster_described = cluster_df.describe().T\n",
" cluster_filtered = cluster_described[(cluster_described['min'] != 0) | (cluster_described['max'] != 0)]\n",
" changes[n_clusters].append(len(cluster_df))\n",
"\n",
"fig, ax = plt.subplots()\n",
"bp = ax.boxplot(changes.values(), medianprops = {\"color\" : \"black\", \"linewidth\" : 1.5})\n",
"ax.set_xticklabels(changes.keys())\n",
"ax.set_yticks(np.arange(0, 101, 10))\n",
"\n",
"plt.title('クラスタの数の変化に伴う各クラスタに属するレコード数の変化')\n",
"plt.xlabel('クラスタの数')\n",
"plt.ylabel('各クラスタに属するレコードの数')\n",
"plt.grid(True)\n",
"\n",
"plt.show()\n",
"# plt.savefig(\"/content/クラスタの数の変化に伴う各クラスタに属するレコードの数の変化.png\", dpi=300, format=\"png\", bbox_inches='tight')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 347
},
"id": "LWfxLVJ9qy9X",
"outputId": "25f177bb-a5e3-4fc3-8204-484a124d355c"
},
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.7/dist-packages/matplotlib/cbook/__init__.py:1376: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n",
" X = np.atleast_1d(X.T if isinstance(X, np.ndarray) else np.asarray(X))\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"import random\n",
"\n",
"def filter_target_cols(df):\n",
" \"\"\"\n",
" 反実仮想から施策の対象とする列を選定する。\n",
" \"\"\"\n",
" describe_df = df.describe().T\n",
" filtered_df = describe_df[(describe_df[\"50%\"] != 0)]\n",
" target_cols = filtered_df.index.to_list()\n",
" return target_cols\n",
"\n",
"\n",
"def decide_change_values(df, value_size, target_value=\"50%\", random_seed=123):\n",
" \"\"\"\n",
" 反実仮想から施策の内容(何をどれだけ変化させるのか)を決定する。\n",
" \"\"\"\n",
" random.seed(random_seed)\n",
" raw_cols = df.columns.to_list()\n",
" target_cols = filter_target_cols(df)\n",
" diff_cols = list(set(raw_cols) - set(target_cols))\n",
" support_size = 0\n",
" if value_size > len(target_cols):\n",
" support_size = value_size - len(target_cols)\n",
" cols = target_cols + random.sample(diff_cols, support_size)\n",
" else:\n",
" cols = random.sample(target_cols, value_size)\n",
" change_values = {}\n",
" for col in cols:\n",
" value = df.describe()[col][target_value]\n",
" change_values[col] = value\n",
" return change_values\n",
"\n",
"\n",
"def simulate_measures(pre_measure_df, diff_df, target_size, success_rate, n_clusters, change_rate, random_seed=123):\n",
" \"\"\"\n",
" 施策のシミュレーションを実施する。 \n",
" \"\"\"\n",
" pre_measure_dict = pre_measure_df.to_dict(orient=\"records\")\n",
" \n",
" # 施策作成\n",
" measures = {}\n",
" for cluster_no in range(n_clusters):\n",
" tmp_df = diff_df[diff_df['cluster'] == cluster_no]\n",
" tmp_df = tmp_df.drop(columns=\"cluster\")\n",
" measure = decide_change_values(tmp_df, target_size)\n",
" measures[cluster_no] = measure\n",
" index = -1\n",
" for row in pre_measure_df.to_dict(orient=\"records\"):\n",
" index = index + 1\n",
" random.seed(index+random_seed)\n",
" if random.random() < success_rate: \n",
" cluster_no = pre_measure_dict[index][\"cluster\"]\n",
" for col in measures[cluster_no]:\n",
" value = measures[cluster_no][col]\n",
" pre_measure_dict[index][col] = pre_measure_dict[index][col] + (value)*change_rate\n",
" else:\n",
" pass\n",
" post_measure_df = pd.DataFrame(pre_measure_dict)\n",
" random.seed(random_seed)\n",
" return post_measure_df"
],
"metadata": {
"id": "uum7bJkzyODK"
},
"execution_count": 13,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# シミュレーション用のパラメータ\n",
"tmp_dict = {}\n",
"for target_size in [1, 2, 3]:\n",
" tmp_dict[target_size] = {}\n",
" tmp_dict[target_size][\"l\"] = []\n",
" tmp_dict[target_size][\"h\"] = []\n",
" for n_clusters in range(1, 21):\n",
" # target_size = 1\n",
" success_rate = 0.5\n",
" change_rate = 0.5\n",
"\n",
" test_pre_counter = pre_counter\n",
" test_diff_df = diff_df\n",
"\n",
" summarized_cf = summarize_cf(diff_df, n_clusters)\n",
" summarized_cf\n",
"\n",
" # クラスタ番号の付与\n",
" test_pre_counter[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
" test_pre_counter=test_pre_counter.drop(columns=\"cluster\")\n",
"\n",
" # 施策を実施する直前のラベルを予測\n",
" pre_results = model.predict(test_pre_counter)\n",
"\n",
" test_pre_counter[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
" test_diff_df[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
"\n",
" post_measure_df = simulate_measures(test_pre_counter, test_diff_df, target_size, success_rate, n_clusters, change_rate)\n",
" post_measure_df = post_measure_df.drop(columns=\"cluster\")\n",
"\n",
" # 施策を実施した直後のラベルを予測\n",
" post_results = model.predict(post_measure_df)\n",
"\n",
" tmp_dict[target_size][\"l\"].append(n_clusters)\n",
" tmp_dict[target_size][\"h\"].append(sum(post_results))\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(111)\n",
"\n",
"ax.plot([1,20], [1,20], color = \"black\" ,label=\"基準\")\n",
"\n",
"for tmp_key in tmp_dict:\n",
" l = tmp_dict[tmp_key][\"l\"]\n",
" h = tmp_dict[tmp_key][\"h\"]\n",
" ax.plot(l, h, label=str(tmp_key))\n",
"\n",
"plt.xticks(l)\n",
"plt.yticks(np.arange(0, 31, 5))\n",
"\n",
"hans, labs = ax.get_legend_handles_labels()\n",
"ax.legend(handles=hans[::-1], labels=labs[::-1], bbox_to_anchor=(1.05, 1), loc=\"upper left\", title=\"参考にする特徴の数\")\n",
"\n",
"plt.grid(True)\n",
"\n",
"plt.title('施策における参考にする特徴の数の変化に伴う意思決定が成功した件数の変化')\n",
"plt.xlabel('クラスタの数(有識者・施策の数)')\n",
"plt.ylabel('意思決定が成功した件数')\n",
"\n",
"plt.show()\n",
"# plt.savefig(\"/content/施策における参考にする特徴の数の変化に伴う意思決定が成功した件数の変化.png\", dpi=300, format=\"png\", bbox_inches='tight')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 294
},
"id": "LsitCbiY0Swi",
"outputId": "b5a54044-0f39-4d00-f5cb-b705aa8f6460"
},
"execution_count": 14,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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UNA4oCZ+HlJ+hfIAG9LS0jrXrVs300eGa+GvlFLKVUFBQeNKlSp1bWRk5PGAgIBLYzz5FcTj8ciRI0euO3jw4DjsrbT/Qc/IlFJKua1mZGTkSS34/SMgIMBERkbGYVteMg9zEfOjlFLqyhBwvoL/wIED2vJ8ATm//1nLeC38lVJKXVQjRowo1r9//1JJSUkydOjQ4mlpfz07Lj09nYSEBElISJDbb7+9ckJCgiQlJcmmTZvyzZ07N783XEJCgrz00kulsrvuunXrVjvX8oSEBNm1a1fw4sWLw9etWxeScfmiRYvC77zzzkq+8zJOAyxYsCB85MiRRUePHl20ZcuWFUaPHl106dKl4YMGDcrRDZUGDBhQ4v333y8+adKkQv379y+RlpZGy5YtK+QkLdBr/koppS6SefPm5d+xY0fIe++9V/r5558/MGrUqGKzZs0qPHHixGIzZszYUa5cubSdO3cGjx8/vijA3r17QwYPHlxi8+bNYcHBwZ7hw4fv86a1fPny8EOHDgUDfPzxx0WmT59e5NixY0FpaWkyaNCgvXfeeefp5ORkmTFjRsHU1FRJSUmRpKQkiY2NDR48eHBkcnKyBAQE8Nprr53pEPfyyy+XWrZsWYEyZcqkrFixokDLli1jhwwZcubOskePHg186623SqekpATs2bMnqHv37uUOHjyY748//gi96aabqgUHB3uWLVv2x+rVq0M/+OCDyL59+x4aOnRoCYCff/454uTJk4GzZs0qsnbt2vC2bdsee/DBB08BnDx5MmDQoEEl1qxZkz8uLi6wePHiaZ06dTrasmXLk951x8XFBaalpcnhw4eDateunbh+/frQ2NjYoM8//7wQwC233JJQsWLFLN8PRwt/pZRSF9XTTz99aNq0aUX69++/v1mzZifj4+MD9+/fH7x06dL8U6ZMKeoNFx8fH7h8+fKIJUuWFLrhhhviW7RoUalbt26H27Vrd2L16tXhN91002mABg0anL7xxhsTypYtmxoUFER4eLgHbCvC/v37g8PCwjxhYWGe4sWLp+fLl89Tq1atxODgYBMaGvq3SxODBw8+CBzs169fydq1ayf07dv3b7ea/+WXX8LS09PZs2dPvuHDh0d+8803O8HW/OfPn7/DGy4wMJAePXoceffdd0v88ssvBby3YD527FjQtGnT/nzmmWfK3X///acAjhw5Evjggw9e8/zzzx+qUaNG0tatW0NefPHFI88880zZLVu2hP73v/89/MknnxRZsmRJwc2bN4eVLl065aeffkpv1KjRyaJFi6b9+OOPBX7//ff8o0aN+p8W/koppS4pU6ZMKfT++++XAti4cWN4jRo1El544YVyGzZsCK9Zs2YCQK9evQ6NHj16D8CyZcvCT5w4EdilS5cjo0aN2rNy5crwNm3anAgKssXW3r178913331xANWrV8/0oW/h4eGmT58+RwGGDh1a/Ouvvy7i8Xjk3nvvjc8svMfjoU+fPlctWrSoYGRkZOqyZcsKtG/fPvbRRx+NA1i6dGnE22+/ve+ll14q89BDD51o0KBBVW/cokWL1q5evXpi+/btj3bp0uXYrbfeWrVbt26Hmzdvfqb2HhUVVX779u35AgICjPd5DD179iw7YMCA/Xfcccfpl19+uVSdOnUSCxQo4Pn00093V69evcbzzz9/pG3btie2bt0aUrx48dTU1FS5/fbbT82dO7fQiy++eDAlJUWqVq2aXK9evaTs/B9a+CullLrg2rRpE9e6deu47t27l+ncufNhj8cj4eHhHmMM33zzTeHRo0fviYyMTP/hhx8ixo0bV3zVqlURN910U/z3339faOXKlflr1KiRdPLkyYCiRYt6AI4dOxYYERGRnpV1nzp1KmDSpEnFvv322+3169evnlmY+Ph4adOmTcWAgAAzZMiQPTfffHPCgQMHgtu2bVsxMjIyrUmTJqf79et3MDg4mJSUlIBJkyYV/fnnn7d54/vW/vv27VvqxIkTQaVKlUoNDAzktddeu6pv374H+/Xrt3fs2LHFixQpcibfW7duDbvjjjtOAyxevLhgVFTUEYCgoCCKFCmSdvTo0cDffvstrHnz5iePHz8e1KVLl6MRERGedevWhc+bN69A0aJF0/7973+fzu7/oR3+lFJKXXDLli0Lu/POOysHBweb+fPnF9y6dWsowLZt20K7d+9+pFWrVhWfe+650uPHjy82ZMiQfUWLFk3btWtXyMaNG8OXLFlScPTo0SWWLFlypsNfYGAggwcPLrVt27Z8ffv2PWfHPxExKSkpIiKcPn068MiRI4EZw8yePbtgy5Ytj/fs2fPw8uXL8x8/fjywSpUqKQ899NDxX3/9NczJa0jr1q3Lb9q0KfzRRx893qRJk8r169ev2qBBg6q//fZbRP369avOmzcv/4svvni4adOmJ4wx0rdv37JbtmwJHzVqVGTPnj1jV61aFXHbbbedaXkICgoyTtr5QkNDPaVKlUoHSE5OlkOHDgWXLl06be/evcFdu3at8MMPPxR+7LHHrmnevHmVPn36HNq/f3++NWvW5G/SpEm2C3+t+SullLrgSpYsmTZ16tSdH3/8cdFatWolzpo1q7DH46Fp06YnBw4cWHr+/PnbPR6PhISEmOTkZClXrlzyrFmzdnrjR0VFXSUiZ9IrUKBA+p9//hlStWrVlLlz5xZ6+OGHT9SpUyfp1KlTAUlJSQFXXXXVmSEEERERpmvXrkfat29foUCBAumRkZH/aDF49NFH4xITE6VJkyZVRo4cubtTp07lX3311QNTpkwpNm3atB1gLwv07t378LFjx4Juu+22hF69eh2aPXt2obFjx+5t1qzZNbNmzfozODj4TJplypRJXbVq1dZ77733mldeeeXApk2b8pUpU+ZvlyiKFy+eumTJkvC33367VM+ePQ8DJCUlSefOncu1bNnyWEBAAE8//fSx+fPnF2zRosWJNWvWhLdv3/7YjTfemLR06dLTEydOLJacnCxhYWHZuqeCFv5KKaUuuMqVK6cC7N+/PzghISGgbdu2x2bNmlV46tSpRaZPn+4tNA1ASEiImTlz5k7f+OvXrw/r06fPmQ54ZcqUSSlUqFA6wIgRI3YPGDCg9O7du0OCgoLMTTfdFP/BBx/s843frVu32J07d+arU6dOwtnyGBYWZipWrJj0zDPPXH369OnAN998s/RHH320q1q1aikAtWrVSvYN/+CDD57as2dPvtTUzPvZLV68OH9UVFTZY8eOBX/99deFCxUqlH7dddcljho1qkTDhg3jK1WqlDp8+PA9nTp1qtCkSZOTDzzwwMkuXbqUXbp0acGHHnro2IABAw560xo+fPjeFi1aVNq7d29IkyZNTu3bty944cKFBV544YWDd999d+VJkybtLFeuXFqmGcmEFv5KKaUumvj4+IDNmzeHxcfHB7z++usHvAVrRgEBAcTGxgbWr1+/WmhoqKd8+fLJ5cuXP1PK9ujRI9Z7I6H69esn+rYSZOaxxx4rX7ly5aSBAwceOle4yZMn787O92nWrNmpW265pVpKSkpAYODfrybUrl07sW3btieKFCni2bBhQ8hzzz1X9ttvv92x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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# シミュレーション用のパラメータ\n",
"tmp_dict = {}\n",
"for success_rate in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]:\n",
" tmp_dict[success_rate] = {}\n",
" tmp_dict[success_rate][\"l\"] = []\n",
" tmp_dict[success_rate][\"h\"] = []\n",
" for n_clusters in range(1, 21):\n",
" target_size = 1\n",
" # success_rate = 0.5\n",
" change_rate = 0.5\n",
"\n",
" test_pre_counter = pre_counter\n",
" test_diff_df = diff_df\n",
"\n",
" summarized_cf = summarize_cf(diff_df, n_clusters)\n",
" summarized_cf\n",
"\n",
" # クラスタ番号の付与\n",
" test_pre_counter[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
" test_pre_counter=test_pre_counter.drop(columns=\"cluster\")\n",
"\n",
" # 施策を実施する直前のラベルを予測\n",
" pre_results = model.predict(test_pre_counter)\n",
"\n",
" test_pre_counter[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
" test_diff_df[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
"\n",
" post_measure_df = simulate_measures(test_pre_counter, test_diff_df, target_size, success_rate, n_clusters, change_rate)\n",
" post_measure_df = post_measure_df.drop(columns=\"cluster\")\n",
"\n",
" # 施策を実施した直後のラベルを予測\n",
" post_results = model.predict(post_measure_df)\n",
"\n",
" tmp_dict[success_rate][\"l\"].append(n_clusters)\n",
" tmp_dict[success_rate][\"h\"].append(sum(post_results))\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(111)\n",
"\n",
"ax.plot([1,20], [1,20], color = \"black\" ,label=\"基準\")\n",
"\n",
"for tmp_key in tmp_dict:\n",
" l = tmp_dict[tmp_key][\"l\"]\n",
" h = tmp_dict[tmp_key][\"h\"]\n",
" ax.plot(l, h, label=str(tmp_key))\n",
"\n",
"plt.xticks(l)\n",
"plt.yticks(np.arange(0, 31, 5))\n",
"\n",
"hans, labs = ax.get_legend_handles_labels()\n",
"ax.legend(handles=hans[::-1], labels=labs[::-1], bbox_to_anchor=(1.05, 1), loc=\"upper left\", title=\"成功率\")\n",
"\n",
"plt.grid(True)\n",
"\n",
"plt.title('施策における成功率の変化に伴う意思決定が成功した件数の変化')\n",
"plt.xlabel('クラスタの数(有識者・施策の数)')\n",
"plt.ylabel('意思決定が成功した件数')\n",
"\n",
"plt.show()\n",
"# plt.savefig(\"/content/施策における成功率の変化に伴う意思決定が成功した件数の変化.png\", dpi=300, format=\"png\", bbox_inches='tight')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 294
},
"id": "0hjlAq6OySwD",
"outputId": "856c2823-8a47-424f-9b35-7c8f616cf129"
},
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# シミュレーション用のパラメータ\n",
"tmp_dict = {}\n",
"for change_rate in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]:\n",
" tmp_dict[change_rate] = {}\n",
" tmp_dict[change_rate][\"l\"] = []\n",
" tmp_dict[change_rate][\"h\"] = []\n",
" for n_clusters in range(1, 21):\n",
" target_size = 1\n",
" success_rate = 0.5\n",
" # change_rate = 0.5\n",
"\n",
" test_pre_counter = pre_counter\n",
" test_diff_df = diff_df\n",
"\n",
" summarized_cf = summarize_cf(diff_df, n_clusters)\n",
" summarized_cf\n",
"\n",
" # クラスタ番号の付与\n",
" test_pre_counter[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
" test_pre_counter=test_pre_counter.drop(columns=\"cluster\")\n",
"\n",
" # 施策を実施する直前のラベルを予測\n",
" pre_results = model.predict(test_pre_counter)\n",
"\n",
" test_pre_counter[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
" test_diff_df[\"cluster\"] = summarized_cf[\"cluster\"].to_list()\n",
"\n",
" post_measure_df = simulate_measures(test_pre_counter, test_diff_df, target_size, success_rate, n_clusters, change_rate)\n",
" post_measure_df = post_measure_df.drop(columns=\"cluster\")\n",
"\n",
" # 施策を実施した直後のラベルを予測\n",
" post_results = model.predict(post_measure_df)\n",
"\n",
" tmp_dict[change_rate][\"l\"].append(n_clusters)\n",
" tmp_dict[change_rate][\"h\"].append(sum(post_results))\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(111)\n",
"\n",
"ax.plot([1,20], [1,20], color = \"black\" ,label=\"基準\")\n",
"\n",
"for tmp_key in tmp_dict:\n",
" l = tmp_dict[tmp_key][\"l\"]\n",
" h = tmp_dict[tmp_key][\"h\"]\n",
" ax.plot(l, h, label=str(tmp_key))\n",
"\n",
"ax.set_xticks(l)\n",
"ax.set_yticks(np.arange(0, 31, 5))\n",
"\n",
"hans, labs = ax.get_legend_handles_labels()\n",
"ax.legend(handles=hans[::-1], labels=labs[::-1], bbox_to_anchor=(1.05, 1), loc=\"upper left\", title=\"特徴の変化率\")\n",
"\n",
"plt.grid(True)\n",
"\n",
"plt.title('施策における特徴の変化率の変化に伴う意思決定が成功した件数の変化')\n",
"plt.xlabel('クラスタの数(有識者・施策の数)')\n",
"plt.ylabel('意思決定が成功した件数')\n",
"\n",
"plt.show()\n",
"# plt.savefig(\"/content/施策における特徴の変化率の変化に伴う意思決定が成功した件数の変化.png\", dpi=300, format=\"png\", bbox_inches='tight')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 294
},
"id": "gghunllL9WLw",
"outputId": "d6fc2d27-ea65-4b83-e305-2dc99af8996f"
},
"execution_count": 16,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment