From a97f7edf174ec788277a54be6c07245966b2c5d0 Mon Sep 17 00:00:00 2001 From: Riku-Laine <28960190+Riku-Laine@users.noreply.github.com> Date: Thu, 21 Mar 2019 14:04:02 +0200 Subject: [PATCH] Modifications --- .../Bachelors_thesis_analyses.ipynb | 216 +++++++++++++++--- 1 file changed, 178 insertions(+), 38 deletions(-) diff --git a/analysis_and_scripts/Bachelors_thesis_analyses.ipynb b/analysis_and_scripts/Bachelors_thesis_analyses.ipynb index 19fc434..a89d4f2 100644 --- a/analysis_and_scripts/Bachelors_thesis_analyses.ipynb +++ b/analysis_and_scripts/Bachelors_thesis_analyses.ipynb @@ -497,16 +497,6 @@ " return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n" ] }, - { - "data": { - "text/plain": [ - "<matplotlib.axes._subplots.AxesSubplot at 0x17bfa5f3400>" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, { "data": { "image/png": "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\n", @@ -523,7 +513,8 @@ "source": [ "import seaborn as sns\n", "display(compas.head(3).T)\n", - "sns.kdeplot(np.array(compas_raw.age))" + "sns.kdeplot(np.array(compas_raw.age))\n", + "plt.show()" ] }, { @@ -978,50 +969,199 @@ "\n", "As defined in somewhere, our model is defined by the probabilistic expression $$ P(Y=0 | \\text{do}(R=r)) = \\sum_x P(Y=0|R=r, X=x, T=1)P(T=1|R=r, X=x)P(X=x)$$\n", "\n", - "we approximate $P(X=x)$ with the frequencies and **Gaussian kernel**." + "we approximate $P(X=x)$ with <!--frequencies and **Gaussian kernel**.-->" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 17, "metadata": { "scrolled": false }, "outputs": [ { - "ename": "NameError", - "evalue": "name 'LogisticRegression' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m<ipython-input-1-1f0b5974b681>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# instantiate the model (using the default parameters)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mlr_causal\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mLogisticRegression\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msolver\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'lbfgs'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;31m# fit, reshape X to be of shape (n_samples, n_features)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mlr_causal\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtrain_labeled\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'acceptanceRate_R'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'X'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtrain_labeled\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresult_Y\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mNameError\u001b[0m: name 'LogisticRegression' is not defined" + "data": { + "text/html": [ + "<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>judgeID_J</th>\n", + " <th>acceptanceRate_R</th>\n", + " <th>X</th>\n", + " <th>Z</th>\n", + " <th>W</th>\n", + " <th>result_Y</th>\n", + " <th>probabilities_T</th>\n", + " <th>decision_T</th>\n", + " <th>B_prob_0_machine</th>\n", + " <th>B_prob_1_machine</th>\n", + " <th>B_prob_0_tree</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>28213</th>\n", + " <td>56.0</td>\n", + " <td>0.622487</td>\n", + " <td>1.863196</td>\n", + " <td>-1.305263</td>\n", + " <td>0.646700</td>\n", + " <td>0.0</td>\n", + " <td>0.725045</td>\n", + " <td>1.0</td>\n", + " <td>0.958488</td>\n", + " <td>0.041512</td>\n", + " <td>1.0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>45271</th>\n", + " <td>90.0</td>\n", + " <td>0.354855</td>\n", + " <td>0.928180</td>\n", + " <td>1.103123</td>\n", + " <td>-1.695381</td>\n", + " <td>0.0</td>\n", + " <td>0.951794</td>\n", + " <td>0.0</td>\n", + " <td>0.830737</td>\n", + " <td>0.169263</td>\n", + " <td>1.0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>46254</th>\n", + " <td>92.0</td>\n", + " <td>0.205438</td>\n", + " <td>2.324192</td>\n", + " <td>0.142582</td>\n", + " <td>-0.455072</td>\n", + " <td>0.0</td>\n", + " <td>0.676108</td>\n", + " <td>0.0</td>\n", + " <td>0.980215</td>\n", + " <td>0.019785</td>\n", + " <td>1.0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>27799</th>\n", + " <td>55.0</td>\n", + " <td>0.229048</td>\n", + " <td>-0.428510</td>\n", + " <td>0.093301</td>\n", + " <td>-0.314322</td>\n", + " <td>1.0</td>\n", + " <td>0.530956</td>\n", + " <td>0.0</td>\n", + " <td>0.341636</td>\n", + " <td>0.658364</td>\n", + " <td>1.0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>32158</th>\n", + " <td>64.0</td>\n", + " <td>0.257266</td>\n", + " <td>1.031424</td>\n", + " <td>-0.625772</td>\n", + " <td>0.327365</td>\n", + " <td>0.0</td>\n", + " <td>0.638528</td>\n", + " <td>0.0</td>\n", + " <td>0.853440</td>\n", + " <td>0.146560</td>\n", + " <td>1.0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>14483</th>\n", + " <td>28.0</td>\n", + " <td>0.517479</td>\n", + " <td>0.036196</td>\n", + " <td>1.109770</td>\n", + " <td>-1.484993</td>\n", + " <td>0.0</td>\n", + " <td>0.633938</td>\n", + " <td>1.0</td>\n", + " <td>0.528371</td>\n", + " <td>0.471629</td>\n", + " <td>0.0</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " judgeID_J acceptanceRate_R X Z W result_Y \\\n", + "28213 56.0 0.622487 1.863196 -1.305263 0.646700 0.0 \n", + "45271 90.0 0.354855 0.928180 1.103123 -1.695381 0.0 \n", + "46254 92.0 0.205438 2.324192 0.142582 -0.455072 0.0 \n", + "27799 55.0 0.229048 -0.428510 0.093301 -0.314322 1.0 \n", + "32158 64.0 0.257266 1.031424 -0.625772 0.327365 0.0 \n", + "14483 28.0 0.517479 0.036196 1.109770 -1.484993 0.0 \n", + "\n", + " probabilities_T decision_T B_prob_0_machine B_prob_1_machine \\\n", + "28213 0.725045 1.0 0.958488 0.041512 \n", + "45271 0.951794 0.0 0.830737 0.169263 \n", + "46254 0.676108 0.0 0.980215 0.019785 \n", + "27799 0.530956 0.0 0.341636 0.658364 \n", + "32158 0.638528 0.0 0.853440 0.146560 \n", + "14483 0.633938 1.0 0.528371 0.471629 \n", + "\n", + " B_prob_0_tree \n", + "28213 1.0 \n", + "45271 1.0 \n", + "46254 1.0 \n", + "27799 1.0 \n", + "32158 1.0 \n", + "14483 0.0 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0 61\n", + "0.0 18\n", + "Name: decision_T, dtype: int64\n", + "0.0 41\n", + "1.0 20\n", + "Name: result_Y, dtype: int64\n" ] } ], "source": [ "# instantiate the model (using the default parameters)\n", - "lr_causal = LogisticRegression(solver='lbfgs')\n", + "lr_causal_decision = LogisticRegression(solver='lbfgs')\n", "\n", "# fit, reshape X to be of shape (n_samples, n_features)\n", - "lr_causal.fit(train_labeled['acceptanceRate_R', 'X'].values.reshape(-1,2), train_labeled.result_Y)\n", + "lr_causal_decision.fit(train[['acceptanceRate_R', 'X']].values.reshape(-1,2), train.decision_T)\n", + "\n", + "lr_causal_result = LogisticRegression(solver='lbfgs')\n", + "\n", + "# fit, reshape X to be of shape (n_samples, n_features)\n", + "lr_causal_result.fit(train_labeled[['acceptanceRate_R', 'X']].values.reshape(-1,2), train_labeled.result_Y)\n", + "\n", + "#def causal_probs(r, df, resultY_col, decisionT_col, x_cols):\n", + "# tmp = pd.DataFrame({'acceptanceRate_R' : r * df.shape[0], 'X' : x_cols})\n", + "# result_probs = lr_causal_result.predict_proba(tmp)[:,0]\n", + "# decision_probs = lr_causal_decision.predict_proba(tmp)[:,0]\n", + "# \n", "\n", - "# predict probabilities and attach to data \n", - "label_probabilities_causal = lr_causal.predict_proba(test_labeled['acceptanceRate_R', 'X'].values.reshape(-1,2))\n", - "\n", - "#test['B_prob_0_machine'] = label_probabilities_machine[:, 0]\n", - "#test['B_prob_1_machine'] = label_probabilities_machine[:, 1]\n", - "#\n", - "#from sklearn import tree\n", - "#\n", - "#clf = tree.DecisionTreeClassifier()\n", - "#clf = clf.fit(train_labeled.X.values.reshape(-1,1), train_labeled.result_Y)\n", - "#\n", - "#preds = clf.predict_proba(test.X.values.reshape(-1,1))\n", - "#\n", - "#test['B_prob_0_tree'] = preds[:, 0]\n", - "#\n", "my = np.mean(test.X)\n", "sigma = np.var(test.X)\n", "\n", -- GitLab