Last active
January 11, 2021 21:42
-
-
Save maxkleiner/3dd1e5a7fd9fe1014f6dfd360aa8c288 to your computer and use it in GitHub Desktop.
logisticregression.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"name": "logisticregression.ipynb", | |
"provenance": [], | |
"collapsed_sections": [], | |
"authorship_tag": "ABX9TyOVYWXo8T2P0ORoZdZvs/8K", | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/maxkleiner/3dd1e5a7fd9fe1014f6dfd360aa8c288/logisticregression.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "MS7JmmTjexlp", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np\n", | |
"import pandas as pd\n", | |
"from sklearn.linear_model import LogisticRegression\n", | |
"from sklearn.metrics import classification_report, confusion_matrix\n", | |
"# https://realpython.com/logistic-regression-python/\n" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Qm0fdjWKfJhM", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# For the purpose of this visual classification example, let’s just create arrays for the input (𝑥) and output (𝑦) values:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "8ySq6OeEfNI7", | |
"colab_type": "code", | |
"outputId": "79c7a8e1-631b-4718-e6eb-03ffc463012e", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 203 | |
} | |
}, | |
"source": [ | |
"X = np.arange(10).reshape(-1, 1)\n", | |
"y = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1])\n", | |
"#y = np.array([0, 1, 0,1, 1, 1, 1, 1, 0, 1])\n", | |
"print(X)\n" | |
], | |
"execution_count": 14, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"[[0]\n", | |
" [1]\n", | |
" [2]\n", | |
" [3]\n", | |
" [4]\n", | |
" [5]\n", | |
" [6]\n", | |
" [7]\n", | |
" [8]\n", | |
" [9]]\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "lMPVXyepfYoB", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# The array X is required to be two-dimensional as matrix. \n", | |
"# Once you have the input and output prepared, you can create and define your classification model.\n", | |
"# Other solver options are 'newton-cg', 'lbfgs', 'sag', and 'saga'.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "pGBk1ps8ffk0", | |
"colab_type": "code", | |
"outputId": "f0152124-9ad9-4326-d961-91fabc7cf9f5", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 110 | |
} | |
}, | |
"source": [ | |
"model = LogisticRegression(solver='liblinear', random_state=0)\n", | |
"model.fit(X, y)\n", | |
"print(model)" | |
], | |
"execution_count": 15, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", | |
" intercept_scaling=1, l1_ratio=None, max_iter=100,\n", | |
" multi_class='auto', n_jobs=None, penalty='l2',\n", | |
" random_state=0, solver='liblinear', tol=0.0001, verbose=0,\n", | |
" warm_start=False)\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "LGjdypm8fyq6", | |
"colab_type": "code", | |
"outputId": "b4261b2e-ba68-49ad-88e7-7c2facea55c1", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 314 | |
} | |
}, | |
"source": [ | |
"model = LogisticRegression(solver='liblinear', C=1, random_state=0).fit(X, y)\n", | |
"\n", | |
"print(model.intercept_)\n", | |
"#array([-1.04608067])\n", | |
"print(model.coef_,'\\n')\n", | |
"# The first column is the probability of the predicted output being zero, that is 1 - 𝑝(𝑥). \n", | |
"# The second column is the probability that the output is one, or 𝑝(𝑥).\n", | |
"print(model.predict_proba(X),'\\n')\n", | |
"\n", | |
"print('predict:',model.predict(X))\n", | |
"print('score: ',model.score(X, y))\n" | |
], | |
"execution_count": 16, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"[-1.04608067]\n", | |
"[[0.51491375]] \n", | |
"\n", | |
"[[0.74002157 0.25997843]\n", | |
" [0.62975524 0.37024476]\n", | |
" [0.5040632 0.4959368 ]\n", | |
" [0.37785549 0.62214451]\n", | |
" [0.26628093 0.73371907]\n", | |
" [0.17821501 0.82178499]\n", | |
" [0.11472079 0.88527921]\n", | |
" [0.07186982 0.92813018]\n", | |
" [0.04422513 0.95577487]\n", | |
" [0.02690569 0.97309431]] \n", | |
"\n", | |
"predict: [0 0 0 1 1 1 1 1 1 1]\n", | |
"score: 0.9\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "BZH2sNCTzxNV", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "BqX52mfPfrFH", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# The first column is the probability of the predicted output being zero, that is 1 - 𝑝(𝑥). \n", | |
"# The second column is the probability that the output is one, or 𝑝(𝑥).\n", | |
"# You can use the fact that .fit() returns the model instance and chain the last two statements.\n", | |
"\n", | |
"# model = LogisticRegression(solver='lbfgs', C=1, random_state=0).fit(X, y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "c-uGPz0agB-h", | |
"colab_type": "code", | |
"outputId": "6ed27c6f-db9c-4715-dc1b-e1ea91d151b4", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 54 | |
} | |
}, | |
"source": [ | |
"# One false positive prediction: The fourth observation is a zero that was wrongly predicted as one.\n", | |
"\n", | |
"print(confusion_matrix(y, model.predict(X)))" | |
], | |
"execution_count": 17, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"[[3 1]\n", | |
" [0 6]]\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "XS4_lgDcgHCP", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# It’s often useful to visualize the confusion matrix. \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "lAs1g0Q1gLZh", | |
"colab_type": "code", | |
"outputId": "4cdbafd9-ff77-4849-8cbf-d1d769dc5988", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 268 | |
} | |
}, | |
"source": [ | |
"cm = confusion_matrix(y, model.predict(X))\n", | |
"\n", | |
"plt.rcParams.update({'font.size': 16})\n", | |
"fig, ax = plt.subplots(figsize=(4, 4))\n", | |
"ax.imshow(cm)\n", | |
"ax.grid(False)\n", | |
"ax.xaxis.set(ticks=(0, 1), ticklabels=('Predicted 0s', 'Predicted 1s'))\n", | |
"ax.yaxis.set(ticks=(0, 1), ticklabels=('Actual 0s', 'Actual 1s'))\n", | |
"ax.set_ylim(1.5, -0.5)\n", | |
"for i in range(2):\n", | |
" for j in range(2):\n", | |
" ax.text(j, i, cm[i, j], ha='center', va='center', color='red')\n", | |
"plt.show()\n" | |
], | |
"execution_count": 18, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 288x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "NGTQ9gZvy4un", | |
"colab_type": "code", | |
"outputId": "0cb0aac0-0d38-489b-92df-bcfaf8495c7b", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 184 | |
} | |
}, | |
"source": [ | |
"print(classification_report(y, model.predict(X)))\n" | |
], | |
"execution_count": 19, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
" precision recall f1-score support\n", | |
"\n", | |
" 0 1.00 0.75 0.86 4\n", | |
" 1 0.86 1.00 0.92 6\n", | |
"\n", | |
" accuracy 0.90 10\n", | |
" macro avg 0.93 0.88 0.89 10\n", | |
"weighted avg 0.91 0.90 0.90 10\n", | |
"\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "dcGPVrMny0AE", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# The code above creates a heatmap that represents the confusion matrix:\n", | |
"# You can get a more comprehensive report on the classification with" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "cEhwFRCwz1cV", | |
"colab_type": "code", | |
"outputId": "b59563bd-7f41-40b5-d55b-fa26dbfeb839", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 551 | |
} | |
}, | |
"source": [ | |
"# from utilities2 import plot_classifier, plot_confusion_matrix\n", | |
"import seaborn as sns\n", | |
"\n", | |
"def ap_log_regplot(ap_X, ap_y):\n", | |
" plt.figure(figsize=(10,5))\n", | |
" sns.regplot(ap_X, model.predict(X), logistic=True, color='green')\n", | |
" return None\n", | |
"\n", | |
"#ap_log_regplot(X, y)\n", | |
"#plt.show()\n", | |
"sns.set(style = 'whitegrid')\n", | |
"sns.regplot(X, model.predict_proba(X)[:,1], logistic=True, \n", | |
" scatter_kws={\"color\": \"red\"}, line_kws={\"color\": \"blue\"}) #label=model.predict(X))\n", | |
"# sns.regplot(X, model.predict(X), logistic=True)\n", | |
"plt.title('Logistic Probability Plot')\n", | |
"plt.show()\n", | |
"\n", | |
"#df_confusion_matrix=pd.crosstab(y,model.predict(X)[:,1],rownames=['Actual'],colnames=['Predicted'], normalize=True)\n", | |
"#plot_confusion_matrix(df_confusion_matrix, title='Cell Confusion matrix', cmap=plt.cm.Paired)\n", | |
"sns.heatmap(cm, annot=True)\n", | |
"plt.title('heatmap confusion matrix')\n", | |
"plt.show()" | |
], | |
"execution_count": 20, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAELCAYAAAA4HCbKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de1hU9aLG8S8MlyPmDQoctpVuS5sTZSS6d6Z5Qts4NoBdLba1S8Pj9rY7bS26gZrVJs9jF68n6jF9qJ592GoKSnYxn9JtbiN2SqR2jLwxgoF4geIyzPmD4xwRlYGGZul6P8/jw6w1vzXzDvi8LH6zZq0At9vtRkRELmqB/g4gIiIdT2UvImICKnsRERNQ2YuImIDKXkTEBFT2IiImoLKXX0R6ejqLFi1q83alpaXExsbicrk6IJV3FixYwIwZM9q17apVq7j//vvPef8jjzzC6tWrzzo2NjaWAwcOtOt52+KBBx4gJyenw59H/EtlLy3Ex8fz97//3aePOWfOHKZMmdLm546OjqawsBCLxdKm51u1ahU2m43Y2FhuvPFGkpOT+eSTT9qcu6O98cYb3HHHHWe9r7CwkMsvvxyAtLQ0Xn755XY/T3x8PNdffz2xsbEMGTKEtLQ0qqur2/QYBw8epH///jQ0NLQ7h/iPyl4uWjfccAOFhYV88cUX3H333Tz66KMcO3asxTizlNfSpUspLCxk9erVFBUVsWTJEn9Hkl+Qyl68VldXx/PPP8/QoUMZOnQozz//PHV1dZ77s7KyPPfl5OTQv39/9u3bBzTfM62srOTf//3fiYuLY/DgwaSkpNDY2MjMmTMpLS1l0qRJxMbGkpWV1WJvsqqqiieffJKhQ4cyaNAgJk+e3GruwMBA7rrrLn766Sf279/PggULmD59OjNmzODGG29k9erVlJWVMWnSJAYPHsxtt93Gf//3f7d47Y8++iixsbHccccd7Nq1y3Pf66+/zsiRI4mNjWX06NF8+OGHzbZ1u93MmTOHgQMHMmrUKLZu3eq573xTKKe+f3/961/Jzc3lzTffJDY2lkmTJvHGG28wbdq0ZuPnzp3L3LlzW/1+REVFMWzYML799tsW9zU2NrJ48WJuvfVWbrrpJh5//HFOnDgBwLhx4wAYNGgQsbGxFBYWtvpcYhwqe/HakiVL+Oqrr1izZg1r165l586dLF68GIBPP/2Ut956i2XLlvHhhx+ybdu2cz7OsmXLiIqKYuvWrWzZsoXHHnuMgIAA5s2bR3R0tGcPNDU1tcW2jz/+OD/++CPr1q3j73//Ow899FCruRsaGsjJySEsLIzevXsD8PHHHzNq1Ci++OILEhMTeeyxx+jZsyefffYZr732GvPnz29WyqfG/+Mf/8DhcDB58mTq6+sBuPzyy3n77bcpKChg6tSpzJw5k/Lycs+2O3bs4IorruDzzz9n+vTpTJ06laqqKm++5QCMHTuWxMREJkyYQGFhIUuXLiUpKYnPPvuM48ePe17junXrGDNmTKuP53Q6+fTTT7HZbC3uW7VqFatXr2bFihV89NFH1NTUMGfOHACys7MB2L59O4WFhcTGxnr9GsT/VPbitdzcXKZMmUJERATh4eFMmTKFtWvXApCfn8+dd97J1VdfTadOnVrsdZ4uKCiII0eOUFpaSnBwMHFxcQQEBLT6/OXl5Xz66afMnj2bbt26ERwczODBg885/quvviIuLo6bb76ZdevWsWjRIrp06QI0TfGMHDmSwMBAjh49ypdffsmMGTMIDQ3FZrNxzz33sGbNGs9jXXvttYwaNYrg4GAefvhh6urq+OqrrwCw2+1ERUURGBjI6NGjufLKK9mxY4dn2/DwcP7whz8QHBzM6NGj6dOnD5s2bWr19Z5PZGQkcXFxvP/++wB89tln9OjRg5iYmHNuM2XKFOLi4khJSWHQoEFMmjSpxZjc3FweeughLr/8cjp37sxjjz3G+vXrTTPVdTEL8ncAuXCUl5cTHR3tWY6OjvbswZaXlzcrGqvVes7HmTBhAgsXLmT8+PFA057rxIkTW33+w4cP061bN7p16+ZV3gEDBvDuu++e9b6ePXt6bpeXl9OtWzcuueQSz7ro6GiKiorOOj4wMJCoqCjPa3/vvfdYtmwZhw4dAqCmpoajR496xkdFRTX7ZXb69+3nuOOOO3j33Xe59957Wbt2LcnJyecdv2jRIoYMGXLeMeXl5fzqV7/yLP/qV7+ioaGBioqKn51X/Et79uK1yMhISktLPctOp5PIyEjPfWVlZc3uO5dLLrmEtLQ0Pv74Y5YsWcKyZcuaTZmcS8+ePTl27Jhn6uLnOL18IyMjOXbsGCdPnvSsczqdREVFeZYPHz7sud3Y2EhZWRmRkZEcOnSIZ555hmeffZZt27bxxRdfcPXVVzd7rrKyMk4/uezp37f25D1l5MiR7N69mz179rBp0yYSExPb9Jhnc+o1nVJaWkpQUBARERFe/fUlxqWyl7Oqr6+ntrbW86+hoYHbb7+dJUuWUFlZSWVlJYsWLfIUzKhRo1i1ahV79+7lxx9/9Mzln80nn3zCvn37cLvddOnSBYvF4imSSy+99JzHlkdGRnLLLbcwe/Zsjh07Rn19Pdu3b//Zr9VqtRIbG8v8+fOpra1l165d/O1vfyMpKckz5uuvv+aDDz6goaGB5cuXExISwoABA/jxxx8JCAggPDwcgJUrV7Z447OyspIVK1ZQX19Pfn4+e/fuZfjw4W3KGBERwcGDB5utCw0NJSEhgT//+c9cd911zf7qai+Hw8Hy5cs5cOAA1dXVvPzyy9jtdoKCgggPDycwMPAXOfZffE9lL2c1ceJErr/+es+/BQsWMHnyZGJiYkhKSiIpKYlrr73WczTM8OHDeeCBB3jwwQe57bbbGDBgAAAhISEtHnvfvn08/PDDxMbGMnbsWO6//35++9vfep53yZIlxMXF8eabb7bY9qWXXiIoKAi73c6QIUNYvny5T17v/PnzOXToEMOGDWPq1KlMmzat2ZTHiBEjWL9+PYMGDWLNmjUsWLCA4OBgrrrqKsaPH899993HkCFD2LNnDzfeeGOzx77++uvZt28fv/3tb3nllVd47bXX6NGjR5vy3X333fzP//wPcXFxzY5AGjNmDHv27Gl1Csdbd911F0lJSYwbN44RI0YQEhLCs88+C0CnTp2YNGkS999/P3Fxcfzzn//0yXPKLyNAFy+RjrB3714cDgc7d+4kKEhvDXWU0tJS7HY7W7Zsafaeg8iZtGcvPvPhhx9SV1fHsWPHmDdvHrfeequKvgM1NjaybNkyRo8eraKXVmnPXnxmwoQJ/POf/8RisTBo0CAyMjLa/EakeKempoabb76Z6Oho3njjjfMe/SQCKnsREVPQNI6IiAm0OqGamZnJhg0bOHToELm5ufTr16/FGJfLxdy5c/nss88ICAhg4sSJ3HPPPV6HaGxspLq6muDgYB3LKyLiJbfbTX19PZ07dyYw8Pz77q2W/YgRI3jwwQf5/e9/f84xubm57N+/nw8++ICqqirGjBnDTTfdRK9evbwKXF1dzZ49e7waKyIizfXr189zKpBzabXs4+LiWn2i9evXc8899xAYGEh4eDgjR47k/fff55FHHvEqaHBwsCfw2Y7L9peioqLznmvEH4yYCYyZS5m8o0zeM1quuro69uzZ4+nQ8/HJcXFOp7PZp/esVmuzj5e35tTUjRH37k8/P4pRGDETGDOXMnlHmbxnxFzeTH8b6iDomJgYQkND/R3Do6CggIEDB/o7RjNGzATGzKVM3lEm7xktV21trde/fHxyNI7Vam1xgqzTzxIoIiL+5ZOyHzVqFDk5OTQ2NlJZWclHH31EQkKCLx5aRER8oNWynzt3LrfccguHDx/m4Ycf5vbbbwcgNTWVnTt3ApCcnEyvXr343e9+x7333suUKVM8F0oWERH/a3XO/plnnuGZZ55psT4rK8tz22KxMHv2bN8mExGRc8vPhzfegKee8mq4PkErInKhyc+HqVOhDVc8U9mLiFxo5s2DkBAIC/N6E5W9iMiFpqSkTUUPKnsRkQtPnz5QU9OmTVT2IiKtyc+H+HhikpIgPr5p2Z9mzoS6ujYVvspeROR8Tr0Z6nTS0LUrOJ1Ny/4sfLsdFi6ENlwcSGUvInI+p94M7dwZAgKavoaENK33J7sd3nnH6+EqexGR8znbm6FhYfD9936J014qexGR8znbm6E1NdC7t1/itJfKXkTkfE69GVpdDW5309e6uqb1FxCVvYjI+Zx6M9RqJej4cbBam5btdn8naxOVvYgYh9EOcTzFboeNGylauxY2brzgih5U9iJiFEY8xPEiorIXEWMw6iGOFwmVvYgYw0VyiKNRqexFxBgukkMcjUplLyLGcJEc4mhUKnsRMYaL5BBHo2r1soQAJSUlpKWlUVVVRffu3cnMzKT3GX9aHTlyhPT0dA4ePEhDQwOTJk0iOTm5IzKLyMXKbge7naKCAgYOHOjvNBcVr/bsMzIySElJYcOGDaSkpJCent5izF/+8hdiYmLIzc3l7bff5uWXX8bpdPo8sIiItF2rZV9RUUFxcTEOhwMAh8NBcXExlZWVzcbt2rWLYcOGARAeHs4111xDvo6PFRExhFbL3ul0EhUVhcViAcBisRAZGdlir/3aa69l/fr1uN1uDhw4QGFhIaWlpR2TWkRE2sSrOXtvpKWl8cILL5CcnEx0dDQ33XST5xeEt4qKinwVx2cKCgr8HaEFI2YCY+ZSJu8ok/eMmqs1rZa91WqlrKwMl8uFxWLB5XJRXl6O1WptNi48PJz//M//9CynpqZy1VVXtSlMTEwMoaGhbdqmIxUY8E0iI2YCY+ZSplbk58O8edTu3k1o//5Nhzga5MgXQ32fTmO0XLW1tV7vJLc6jRMREYHNZiMvLw+AvLw8bDYb4eHhzcYdPXqUhoYGALZu3cqePXs88/wiYjA6D43peHU0zqxZs8jOziYhIYHs7Gxmz54NNO2979y5E4AdO3YwevRoRo0axWuvvcbSpUvp1KlTxyUXkfbTeWhMx6s5+759+5KTk9NifVZWluf28OHDGT58uO+SiUjHKSmBM/4613loLm76BK2IGek8NKajshcxI52HxnRU9iJmpPPQmI7PjrMXkQuMzkNjKtqzFxExAZW9iIgJqOxFRExAZS8iYgIqexERE1DZi4iYgMpeRMQEVPYiIiagshcRMQGVvYiICajsRX4J+fkQH09MUhLEx+siIfKLU9mLdDRdFUoMQGUv0tF0VSgxAJW9SEcrKWm6CtTpdFUo+YWp7EU6mq4KJQbgVdmXlJQwduxYEhISGDt2LN+fZY+koqKCiRMnkpiYiN1uZ9asWTQ0NPg6r8iFR1eFEgPwquwzMjJISUlhw4YNpKSkkJ6e3mLM0qVL6du3L7m5uaxdu5avv/6aDz74wOeBRS44uiqUGECrZV9RUUFxcTEOhwMAh8NBcXExlZWVzcYFBARQXV1NY2MjdXV11NfXExUV1TGpRS40djts3EjR2rWwcaOKXn5xrZa90+kkKioKi8UCgMViITIyEqfT2Wzc5MmTKSkpYejQoZ5/utSZiIgx+OwatO+//z79+/dn+fLlVFdXk5qayvvvv8+oUaO8foyioiJfxfGZgoICf0dowYiZwJi5lMk7yuQ9o+ZqTatlb7VaKSsrw+VyYbFYcLlclJeXY7Vam43Lzs7mhRdeIDAwkC5duhAfH8+2bdvaVPYxMTGEhoa2/VV0kAIDXojZiJnAmLmUyTvK5D2j5aqtrfV6J7nVaZyIiAhsNht5eXkA5OXlYbPZCA8PbzauV69efPrppwDU1dWxdetWrr766rZmFxGRDuDV0TizZs0iOzubhIQEsrOzmT17NgCpqans3LkTgKeeeoqCggISExMZM2YMvXv35t577+245CIi4jWv5uz79u1LTk5Oi/VZWVme21dccQXLli3zXTIREfEZfYJWRMQEVPYiIiagshcRMQGVvYiICajsRURMQGUvImICKnsRERNQ2YuImIDKXkTEBFT2IiImoLKXi09+PsTHE5OUBPHxTcsiJqeyl4tLfj5MnQpOJw1du4LT2bSswheTU9nLxWXePAgJgc6dISCg6WtISNN6ERNT2cvFpaQEwsKarwsLg++/90scEaNQ2cvFpU8fqKlpvq6mBnr39kscEaNQ2cvFZeZMqKuD6mpwu5u+1tU1rRcxMZW9XFzsdli4EKxWgo4fB6u1adlu93cyEb/y6kpVIhcUux3sdooMdnFoEX/Snr2IiAl4tWdfUlJCWloaVVVVdO/enczMTHqf8YbX448/zu7duz3Lu3fvZtGiRYwYMcKngUVEpO28KvuMjAxSUlJITk5mzZo1pKens2LFimZjXnrpJc/tXbt28Yc//IFhw4b5Nq2IiLRLq9M4FRUVFBcX43A4AHA4HBQXF1NZWXnObf72t7+RmJhISEiI75KKiEi7tbpn73Q6iYqKwmKxAGCxWIiMjMTpdBIeHt5ifF1dHbm5ubz11lttDlNUVNTmbTpaQUGBvyO0YMRMYMxcyuQdZfKeUXO1xudH43z00UdER0djs9navG1MTAyhoaG+jtRuBQY8msOImcCYuZTJO8rkPaPlqq2t9XonudVpHKvVSllZGS6XCwCXy0V5eTlWq/Ws41euXMldd93VhrgiItLRWi37iIgIbDYbeXl5AOTl5WGz2c46hXP48GEKCgpITEz0fVIREWk3r46znzVrFtnZ2SQkJJCdnc3s2bMBSE1NZefOnZ5xq1ev5tZbb6Vbt24dk1ZERNrFqzn7vn37kpOT02J9VlZWs+U//vGPvkklIiI+pU/QioiYgMpeRMQEVPYiIiagshcRMQGVvYiICajsRURMQGUvImICKnsRERNQ2YuImIDKXkTEBFT2IiImoLIXETEBlb2IiAmo7OXnyc+H+HhikpIgPr5pWUQMR2Uv7ZefD1OngtNJQ9eu4HQ2LavwRQxHZS/tN28ehIRA584QEND0NSSkab2IGIrKXtqvpATCwpqvCwuD77/3SxwROTeVvbRfnz5QU9N8XU0N9O7tlzgicm4qe2m/mTOhrg6qq8HtbvpaV9e0XkQMxauyLykpYezYsSQkJDB27Fi+P8ef6evXrycxMRGHw0FiYiI//PCDL7OK0djtsHAhWK0EHT8OVmvTst3u72QicgavLjiekZFBSkoKycnJrFmzhvT0dFasWNFszM6dO1m4cCHLly/nsssu48SJE4SEhHRIaDEQux3sdooKChg4cKC/04jIObS6Z19RUUFxcTEOhwMAh8NBcXExlZWVzca99dZbjB8/nssuuwyALl26EBoa2gGRRUSkrVrds3c6nURFRWGxWACwWCxERkbidDoJDw/3jNu7dy+9evXi97//PTU1Ndx222388Y9/JCAgwOswRUVF7XgJHaugoMDfEVowYiYwZi5l8o4yec+ouVrj1TSON1wuF7t372bZsmXU1dXxyCOPEB0dzZgxY7x+jJiYGEP9NVBgwKkJI2YCY+ZSJu8ok/eMlqu2ttbrneRWp3GsVitlZWW4XC6gqdTLy8uxWq3NxkVHRzNq1ChCQkK45JJLGDFiBDt27GhHfBER8bVWyz4iIgKbzUZeXh4AeXl52Gy2ZlM40DSXv3nzZtxuN/X19Xz++edcc801HZNaRETaxKtDL2fNmkV2djYJCQlkZ2cze/ZsAFJTU9m5cycAt99+OxEREYwePZoxY8Zw1VVXcffdd3dcchER8ZpXc/Z9+/YlJyenxfqsrCzP7cDAQJ588kmefPJJ36UTERGf0CdoRURMQGUvImICKnsRERNQ2YuImIDKXkTEBFT2IiImoLIXETEBlb2IiAmo7EVETEBlLyJiAip7ERETUNmLiJiAyl5ExARU9iIiJqCyFxExAZW9iIgJqOxFRExAZS8iYgJeXZawpKSEtLQ0qqqq6N69O5mZmfTu3bvZmAULFvDOO+8QGRkJwI033khGRobPA4uISNt5VfYZGRmkpKSQnJzMmjVrSE9PZ8WKFS3GjRkzhieeeMLnIUVE5OdpdRqnoqKC4uJiHA4HAA6Hg+LiYiorKzs8nJwmPx/i44lJSoL4+KZlEREvtVr2TqeTqKgoLBYLABaLhcjISJxOZ4ux69atIzExkfHjx1NYWOj7tGaVnw9Tp4LTSUPXruB0Ni2r8EXES15N43jjvvvuY9KkSQQHB7NlyxYmT57M+vXr6dGjh9ePUVRU5Ks4PlNQUODvCFydnk5wYyONAQEAVAOBjY3Up6fz7f+9R2IERvhenUmZvKNM3jNqrta0WvZWq5WysjJcLhcWiwWXy0V5eTlWq7XZuMsuu8xz++abb8ZqtfLtt98yePBgr8PExMQQGhrahvgdq6CggIEDB/o7BvzwA4SHQ0AA1TU1dA4Lg06d6FRRYYx8GOh7dRpl8o4yec9ouWpra73eSW51GiciIgKbzUZeXh4AeXl52Gw2wsPDm40rKyvz3P7mm284dOgQffr0aUtuOZc+faCmpvm6mho444goEZFz8WoaZ9asWaSlpbF48WK6du1KZmYmAKmpqUyfPp3rrruO+fPn8/XXXxMYGEhwcDAvvfRSs719+Rlmzmyaoz+luhrq6prWi4h4wauy79u3Lzk5OS3WZ2VleW6f+gUgHcBuh4ULYd48gnbvhv79m4rebvd3MhG5QPjsDVrpYHY72O0UGWzOUEQuDDpdgoiICajsRURMQGUvImICKnsRERNQ2YuImIDKXkTEBFT2IiImoLIXETEBlb2IiAmo7EVETEBlLyJiAip7ERETUNmLiJiAyl5ExARU9iIiJqCyFxExAZW9iIgJqOxFREzAq7IvKSlh7NixJCQkMHbsWL7//vtzjv3uu+8YMGCArkkrImIgXpV9RkYGKSkpbNiwgZSUFNLT0886zuVykZGRwciRI30aUkREfp5Wy76iooLi4mIcDgcADoeD4uJiKisrW4x9/fXX+bd/+zd69+7t86AiItJ+rZa90+kkKioKi8UCgMViITIyEqfT2Wzcrl272Lx5Mw899FCHBBURkfYL8sWD1NfX8+yzz/Liiy96fim0R1FRkS/i+FRBQYG/I7RgxExgzFzK5B1l8p5Rc7Wm1bK3Wq2UlZXhcrmwWCy4XC7Ky8uxWq2eMUeOHGH//v1MnDgRgOPHj+N2uzl58iTPPfec12FiYmIIDQ1tx8voGAUFBQwcONDfMZoxYiYwZi5l8o4yec9ouWpra73eSW617CMiIrDZbOTl5ZGcnExeXh42m43w8HDPmOjoaLZt2+ZZXrBgATU1NTzxxBPtiC8iIr7m1dE4s2bNIjs7m4SEBLKzs5k9ezYAqamp7Ny5s0MDiojIz+fVnH3fvn3JyclpsT4rK+us46dNm/bzUomIiE/pE7Rnk58P8fHEJCVBfHzTsojIBUxlf6b8fJg6FZxOGrp2BaezaVmFLyIXMJX9mebNg5AQ6NwZAgKavoaENK0XEblAqezPVFICYWHN14WFwXnOByQiYnQq+zP16QM1Nc3X1dSATgEhIhcwlf2ZZs6Eujqorga3u+lrXV3TehGRC5TK/kx2OyxcCFYrQcePg9XatGy3+zuZiEi7+eTcOBcdux3sdooM9tFoEZH20p69iIgJqOxFRExAZS8iYgIqexERE1DZi4iYgMpeRMQEVPYiIiagshcRMQGVvYiICajsRURMQGUvImICXp0bp6SkhLS0NKqqqujevTuZmZn0PuOUvytXruStt94iMDCQxsZG7rnnHh588MGOyCwiIm3kVdlnZGSQkpJCcnIya9asIT09nRUrVjQbk5CQwJ133klAQAAnT54kMTGRwYMHc80113RIcBER8V6r0zgVFRUUFxfjcDgAcDgcFBcXU1lZ2WzcJZdcQkBAAAA//fQT9fX1nmUREfGvVvfsnU4nUVFRWCwWACwWC5GRkTidTsLDw5uN/fjjj5k/fz779+/nz3/+M/37929TmKKiojaN/yUUFBT4O0ILRswExsylTN5RJu8ZNVdrfHo++xEjRjBixAhKS0uZMmUKt9xyC7/+9a+93j4mJobQ0FBfRvpZCgx4PnsjZgJj5lIm7yiT94yWq7a21uud5FancaxWK2VlZbhcLgBcLhfl5eVYrdZzbhMdHc11113Hpk2bvEssIiIdqtWyj4iIwGazkZeXB0BeXh42m63FFM7evXs9tysrK9m2bRv9+vXzcVwREWkPr6ZxZs2aRVpaGosXL6Zr165kZmYCkJqayvTp07nuuuv461//ypYtWwgKCsLtdjNu3DiGDh3aoeFFRMQ7XpV93759ycnJabE+KyvLc/upp57yXSoREfEpfYJWRMQEVPYiIiZgrLJPSYH8fH+nEBG56Bir7MvLYepUFb6IiI8Zq+zDwiAkBObN83cSEZGLirHKHpoK//vv/Z1CROSiYryyr6mBM06fLCIiP4+xyr6mBurqYOZMfycREbmoGKvsIyNh4UKw2/2dRETkouLTs17+bO+8AwY666WIyMXCWHv2IiLSIVT2IiImoLIXETEBlb2IiAkY4g1at9sNQF1dnZ+TtFRbW+vvCC0YMRMYM5cyeUeZvGekXKc681SHnk+A25tRHezEiRPs2bPH3zFERC5I/fr1o0uXLucdY4iyb2xspLq6muDgYAICAvwdR0TkguB2u6mvr6dz584EBp5/Vt4QZS8iIh1Lb9CKiJiAyl5ExARU9iIiJqCyFxExAZW9iIgJqOxFRExAZS8iYgJ+P11CSUkJaWlpVFVV0b17dzIzM+nt58sSZmZmsmHDBg4dOkRubi79+vXzax6Ao0eP8vjjj7N//35CQkK48sormTNnDuHh4X7NNXnyZA4ePEhgYCBhYWE8++yz2Gw2v2Y6ZeHChSxYsMAQP8P4+HhCQkII/b/rNcyYMYNhw4b5NRM0ffT/hRdeYOvWrYSGhnLDDTfw3HPP+S3PwYMHmTJlimf5xIkTnDx5kn/84x9+ywTwySef8Oqrr+J2u3G73UydOpXf/e53fs20adMmXn31VRoaGujWrRsvvvgil19++bk3cPvZAw884H7vvffcbrfb/d5777kfeOABPydyu7dv3+4uLe4kWG4AAAUTSURBVC1133rrre7du3f7O47b7Xa7jx496v788889y3/5y1/cTz75pB8TNTl+/Ljn9ocffugeM2aMH9P8v6KiIveECRMM8zM0So4zPffcc+7nn3/e3djY6Ha73e4jR474OVFzc+fOdc+ePduvGRobG91xcXGen98333zjvuGGG9wul8tvmaqqqtyDBw92f/fdd263u6k7x48ff95t/DqNU1FRQXFxMQ6HAwCHw0FxcTGVlZX+jEVcXBxWq9WvGc7UvXt3fvOb33iWb7jhBkpLS/2YqMnp5+M4efKkIU53UVdXx5w5c5g1a5a/oxhadXU17733Hn/60588P7dLL73Uz6n+X11dHbm5udx1113+jkJgYCAnTpwAmv7aiIyMbPX0BB1p3759XHrppfTp0weA4cOHs3nz5vN2p1+ncZxOJ1FRUVgsFgAsFguRkZE4nU6/T08YWWNjI++++y7x8fH+jgLA008/zZYtW3C73bzxxhv+jsOrr75KUlISvXr18neUZmbMmIHb7WbgwIE89thjdO3a1a95Dhw4QPfu3Vm4cCHbtm2jc+fO/OlPfyIuLs6vuU7ZuHEjUVFRXHvttX7NERAQwCuvvMLkyZMJCwujurqa119/3a+Z+vTpww8//MCOHTu4/vrryc3NBThvd+oN2gvQc889R1hYGOPGjfN3FACef/55Nm3axH/8x3/w0ksv+TVLYWEhRUVFpKSk+DXHmd5++23Wrl3LypUrcbvdzJkzx9+RcLlcHDhwgH/9139l1apVzJgxg2nTpnHy5El/RwNg5cqVhtirb2ho4L/+679YvHgxn3zyCUuWLOHRRx+lurrab5m6dOnCyy+/zIsvvsidd95JRUUFXbt29ew4n41fy95qtVJWVobL5QKa/vOVl5cbbgrFSDIzM9m3bx+vvPKKX/+MPJsxY8awbds2jh496rcM27dvZ+/evYwYMYL4+HgOHz7MhAkT2Lx5s98yAZ7/0yEhIaSkpPDll1/6NQ80ZQoKCvJMow4YMIAePXpQUlLi52RQVlbG9u3bSUxM9HcUvvnmG8rLyxk4cCAAAwcOpFOnTuzdu9evuYYMGcK7777LqlWrGDduHD/99BNXXHHFOcf7tS0iIiKw2Wzk5eUBkJeXh81m0xTOOcyfP5+ioiIWLVpESEiIv+NQXV2N0+n0LG/cuJFu3brRvXt3v2WaOHEimzdvZuPGjWzcuJGePXvy5ptvMnToUL9lqqmp8cz3ut1u1q9fb4gjlsLDw/nNb37Dli1bgKYj4yoqKrjyyiv9nAxWr17N8OHD6dGjh7+j0LNnTw4fPsx3330HwN69e6moqDhvsf4Sjhw5AjRN686fP5/77ruPsLCwc473+ymO9+7dS1paGsePH6dr165kZmby61//2p+RmDt3Lh988AE//PADPXr0oHv37qxbt86vmb799lscDge9e/fmX/7lXwDo1asXixYt8lumH374gcmTJ/Pjjz8SGBhIt27deOKJJ/w+x3q6+Ph4li5d6tdDLw8cOMC0adNwuVw0NjbSt29fnnnmGSIjI/2W6fRsTz31FFVVVQQFBfHoo48yfPhwf8ciISGBp59+mltuucXfUQBYu3YtWVlZnjeyp0+fzsiRI/2a6emnn+bLL7+kvr6em2++maeeespzaO/Z+L3sRUSk4xlr0ldERDqEyl5ExARU9iIiJqCyFxExAZW9iIgJqOxFRExAZS8iYgIqexERE/hffDd52OppT9gAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "lOr4XWiU0kSX", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"\n", | |
"Now we improve our model with the exchange of the solver from liblinear to lbfgs:\n", | |
"\n", | |
"---\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "TuVjHYwf0v9e", | |
"colab_type": "code", | |
"outputId": "6923a84e-f219-4943-8a5f-cc5af8ec7ed2", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 551 | |
} | |
}, | |
"source": [ | |
"model = LogisticRegression(solver='lbfgs', C=1, random_state=0).fit(X, y)\n", | |
"sns.set(style = 'whitegrid')\n", | |
"sns.regplot(X, model.predict_proba(X)[:,1], logistic=True, \n", | |
" scatter_kws={\"color\": \"red\"}, line_kws={\"color\": \"blue\"}) #label=model.predict(X))\n", | |
"# sns.regplot(X, model.predict(X), logistic=True)\n", | |
"plt.title('Logistic Probability Plot')\n", | |
"plt.show()\n", | |
"\n", | |
"#df_confusion_matrix=pd.crosstab(y,model.predict(X)[:,1],rownames=['Actual'],colnames=['Predicted'], normalize=True)\n", | |
"#plot_confusion_matrix(df_confusion_matrix, title='Cell Confusion matrix', cmap=plt.cm.Paired)\n", | |
"cm = confusion_matrix(y, model.predict(X))\n", | |
"sns.heatmap(cm, annot=True)\n", | |
"plt.title('heatmap confusion matrix')\n", | |
"plt.show()" | |
], | |
"execution_count": 21, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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dOlCaWmpwcmgvLyczZs3M3z4cKOj8M0331BRUeG79my/fv1o164d27dvNzTXgAEDWLZsGcuXL2fUqFH88ssvnH/++Sccb2hbBHp9W2k0b948iouLWbhwIXa73eg4VFdX43K5fNvr1q2jU6dOdO7c2bBM9957L+vXr2fdunWsW7eOrl278uqrrzJw4EDDMtXU1Pjme71eL2vWrDHFiqWIiAiuvPJKNmzYADSujKusrOSCCy4wOBmsWLGCwYMH06VLF6Oj0LVrV/bs2cP3338PwPbt26msrDxpsf4WfvrpJ6BxWnfevHncfvvthIeHnzKA7twAAAEZSURBVHC84ac43r59O1OnTuXgwYN07NiROXPmcOGFFxoZidmzZ7N27Vr27t1Lly5d6Ny5M2+99Zahmb777jtSUlLo0aMHZ511FgDdunVj4cKFhmXau3cv48eP5+effyY4OJhOnTrxyCOPGD7HerTExEReeuklQ5de7tq1i0mTJuHxeGhoaKBXr15Mnz6dqKgowzIdne3RRx9l//79hISE8MADDzB48GCjY5GcnMxjjz3GNddcY3QUAFavXk1WVpbvg+z77ruPpKQkQzM99thjfPHFF9TV1XH11Vfz6KOP+pb2Ho/hZS8iIm3PXJO+IiLSJlT2IiIWoLIXEbEAlb2IiAWo7EVELEBlLyJiASp7ERELUNmLiFjA/wEuqyeT+KFj/gAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "X7Rwblyo1yyW", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import statsmodels.api as sm" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "x_3kqEkK1rr8", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# You can also implement AND study logistic regression in Python with the StatsModels package. \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "mCj9Kk7w15Re", | |
"colab_type": "code", | |
"outputId": "ce965ee5-f9a8-4134-aa3c-97df6371c5a4", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 982 | |
} | |
}, | |
"source": [ | |
"y = np.array([0, 1, 0, 0, 1, 1, 1, 1, 1, 1])\n", | |
"x = sm.add_constant(X)\n", | |
"print(x, y)\n", | |
"\n", | |
"smodel = sm.Logit(y, x)\n", | |
"\n", | |
"result = smodel.fit(method='newton')\n", | |
"print(result.params)\n", | |
"print(result.predict(x))\n", | |
"print((result.predict(x) >= 0.5).astype(int))\n", | |
"print(result.pred_table())\n", | |
"print(result.summary(),'\\n')\n", | |
"\n", | |
"# These are detailed reports with values that you can obtain with appropriate methods and attributes. \n", | |
"\n", | |
"print(result.summary2())\n", | |
"\n", | |
"# For more information, check out the official documentation related to LogitResults.\n", | |
"# https://www.statsmodels.org/stable/generated/statsmodels.discrete.discrete_model.LogitResults.html\n" | |
], | |
"execution_count": 23, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"[[1. 0.]\n", | |
" [1. 1.]\n", | |
" [1. 2.]\n", | |
" [1. 3.]\n", | |
" [1. 4.]\n", | |
" [1. 5.]\n", | |
" [1. 6.]\n", | |
" [1. 7.]\n", | |
" [1. 8.]\n", | |
" [1. 9.]] [0 1 0 0 1 1 1 1 1 1]\n", | |
"Optimization terminated successfully.\n", | |
" Current function value: 0.350471\n", | |
" Iterations 7\n", | |
"[-1.972805 0.82240094]\n", | |
"[0.12208792 0.24041529 0.41872657 0.62114189 0.78864861 0.89465521\n", | |
" 0.95080891 0.97777369 0.99011108 0.99563083]\n", | |
"[0 0 0 1 1 1 1 1 1 1]\n", | |
"[[2. 1.]\n", | |
" [1. 6.]]\n", | |
" Logit Regression Results \n", | |
"==============================================================================\n", | |
"Dep. Variable: y No. Observations: 10\n", | |
"Model: Logit Df Residuals: 8\n", | |
"Method: MLE Df Model: 1\n", | |
"Date: Thu, 16 Apr 2020 Pseudo R-squ.: 0.4263\n", | |
"Time: 17:01:33 Log-Likelihood: -3.5047\n", | |
"converged: True LL-Null: -6.1086\n", | |
"Covariance Type: nonrobust LLR p-value: 0.02248\n", | |
"==============================================================================\n", | |
" coef std err z P>|z| [0.025 0.975]\n", | |
"------------------------------------------------------------------------------\n", | |
"const -1.9728 1.737 -1.136 0.256 -5.377 1.431\n", | |
"x1 0.8224 0.528 1.557 0.119 -0.213 1.858\n", | |
"============================================================================== \n", | |
"\n", | |
" Results: Logit\n", | |
"===============================================================\n", | |
"Model: Logit Pseudo R-squared: 0.426 \n", | |
"Dependent Variable: y AIC: 11.0094 \n", | |
"Date: 2020-04-16 17:01 BIC: 11.6146 \n", | |
"No. Observations: 10 Log-Likelihood: -3.5047 \n", | |
"Df Model: 1 LL-Null: -6.1086 \n", | |
"Df Residuals: 8 LLR p-value: 0.022485\n", | |
"Converged: 1.0000 Scale: 1.0000 \n", | |
"No. Iterations: 7.0000 \n", | |
"-----------------------------------------------------------------\n", | |
" Coef. Std.Err. z P>|z| [0.025 0.975]\n", | |
"-----------------------------------------------------------------\n", | |
"const -1.9728 1.7366 -1.1360 0.2560 -5.3765 1.4309\n", | |
"x1 0.8224 0.5281 1.5572 0.1194 -0.2127 1.8575\n", | |
"===============================================================\n", | |
"\n" | |
], | |
"name": "stdout" | |
} | |
] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment