QM-7063-Learning-Practice-10/Schrick-Noah_Learning-Practice-10.ipynb

206 lines
24 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Learning Practice 10 for the University of Tulsa's QM-7063 Data Mining Course\n",
"# Evaluating Predictive Performance\n",
"# Professor: Dr. Abdulrashid, Spring 2023\n",
"# Noah L. Schrick - 1492657"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Imports"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from dmba import liftChart"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Problem 5.7 \n",
"Table 5.7 shows a small set of predictive model validation results for a classification\n",
"model, with both actual values and propensities.\n",
"\n",
"| Propensity of 1 | Actual |\n",
"|-----------------|-----------------|\n",
"| 0.03 | 0 |\n",
"| 0.52 | 0 |\n",
"| 0.38 | 0 |\n",
"| 0.82 | 1 |\n",
"| 0.33 | 0 |\n",
"| 0.42 | 0 |\n",
"| 0.55 | 1 |\n",
"| 0.59 | 0 |\n",
"| 0.09 | 0 |\n",
"| 0.21 | 0 |\n",
"| 0.43 | 0 |\n",
"| 0.04 | 0 |\n",
"| 0.08 | 0 |\n",
"| 0.13 | 0 |\n",
"| 0.01 | 0 |\n",
"| 0.79 | 1 |\n",
"| 0.42 | 0 |\n",
"| 0.29 | 0 |\n",
"| 0.08 | 0 |\n",
"| 0.02 | 0 |"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# a.\n",
"Calculate error rates, sensitivity, and specificity using cutoffs of 0.25, 0.5, and 0.75."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cuttoff value of 0.25 has error rate = 0.4, sensitivity = 0.273 and specificity = 1.0\n",
"Cuttoff value of 0.5 has error rate = 0.1, sensitivity = 0.6 and specificity = 1.0\n",
"Cuttoff value of 0.75 has error rate = 0.05, sensitivity = 0.667 and specificity = 1.0\n"
]
}
],
"source": [
"data = [\n",
" [0.03, 0],\n",
" [0.52, 0],\n",
" [0.38, 0], \n",
" [0.82, 1], \n",
" [0.33, 0], \n",
" [0.42, 0], \n",
" [0.55, 1], \n",
" [0.59, 0], \n",
" [0.09, 0], \n",
" [0.21, 0], \n",
" [0.43, 0], \n",
" [0.04, 0], \n",
" [0.08, 0], \n",
" [0.13, 0], \n",
" [0.01, 0], \n",
" [0.79, 1], \n",
" [0.42, 0], \n",
" [0.29, 0], \n",
" [0.08, 0],\n",
" [0.02, 0]\n",
" ]\n",
"\n",
"table = pd.DataFrame(data)\n",
"for cutoff in [0.25, 0.5, 0.75]:\n",
" TP = 0; TN = 0; FP = 0; FN = 0\n",
" for row in table.iterrows():\n",
" if (row[1][0] >= cutoff and row[1][1] == 1):\n",
" TP = TP + 1\n",
" elif (row[1][0] < cutoff and row[1][1] == 0):\n",
" TN = TN + 1\n",
" elif (row[1][1] >= cutoff and row[1][1] == 0):\n",
" FP = FP + 1\n",
" else:\n",
" FN = FN + 1\n",
" \n",
" ER = round(1 - (TP+TN)/len(table.index), 3)\n",
" if TP+FN == 0:\n",
" sens = 0\n",
" else:\n",
" sens = round(TP/(TP+FN), 3)\n",
" if TN+FP == 0:\n",
" spec = 0\n",
" else:\n",
" spec = round(TN/(TN+FP),3)\n",
"\n",
" print(\"Cuttoff value of \" + str(cutoff) + \n",
" \" has error rate = \" + str(ER) + \",\" + \n",
" \" sensitivity = \" + str(sens) +\n",
" \" and specificity = \" + str(spec))\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# b.\n",
"Create a decile lift chart."
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot: title={'center': 'Decile Lift Chart'}, xlabel='Percentile', ylabel='Lift'>"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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h9SjR49S1znXt7J4PB65XC6tWrVK/v7+JdpDQkIqdX+VqVmzZtq2bZuOHDmimJiYcq1T2hglyRjj/e8FCxZo2LBhSk5O1sMPP6zw8HD5+/srLS1NBw4cKLHu5XjSDbAN4Qb4lXjllVckyRtkrr76akk/nS35+btfStO4cWPt2rXrkmto3LixjDGKi4vTNddcc8nbu1QVuaTWp08fvfrqq1qwYIFSU1MrrYYlS5bo6quv1rJly4rVM378+HJvo6rfAg34Ou65AX4F1q1bp0mTJikuLk5DhgyRJIWHh6tbt26aPXu2srOzS6zzzTffeP+7X79+2rFjh5YvX16i38/PQlzI7bffLn9/f02YMKHEesYYffvtt+XeVmWoWbNmub+GoX///mrVqpUmT56szMzMEu0nT57U448/XuEazp3d+fnP45NPPil1H2WpWbOmJF32r5QAqgvO3ACWWbVqlfbs2aOzZ88qNzdX69at09q1axUbG6uVK1cWe8HdCy+8oOuuu06tWrXSyJEjdfXVVys3N1eZmZn68ssvtWPHDknSww8/rCVLlmjAgAG6++671b59e3333XdauXKlZs2apTZt2pSrtsaNG+upp55SamqqDh06pOTkZNWqVUsHDx7U8uXLde+99+qhhx664HbmzJmj1atXl1j+wAMPlPOn9JP27dvrvffe03PPPaf69esrLi5OnTp1KrVvQECAli1bpqSkJN1www0aOHCgunTpooCAAO3evVsLFy5UnTp1Sn3XzfnccsstWrZsmW677Tb17t1bBw8e1KxZs9SiRQudOnWqXNto3LixateurVmzZqlWrVqqWbOmOnXqxP05+PVy7kEtAJXp3OPO56bAwEATGRlpunfvbqZPn27y8/NLXe/AgQMmJSXFREZGmoCAABMdHW1uueUWs2TJkmL9vv32WzN69GgTHR1tAgMDTYMGDczQoUPNsWPHjDHlexT8nKVLl5rrrrvO1KxZ09SsWdM0a9bMjBo1yuzdu7dCY/zldOTIkQo9Cr5nzx5zww03mODgYCOpXI+FHz9+3IwbN860atXKXHHFFSYoKMi0bNnSpKammuzsbG+/rl27mt/85jcl1h86dKiJjY31zns8HjNlyhQTGxtr3G63SUhIMG+99VaJfufG9eyzz5Za1xtvvGFatGhhatSowWPh+NVzGVOBc8oAAAA+jntu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ycnJysnJUXh4uJKTk8vs53K5VFRUVBm1AQAAVFi5w83PL0WVdVnqyJEjfHEmAABw1EV9t1RZvvvuO82ZM6cyNwkAAFAhlRpuAAAAnEa4AQAAViHcAAAAq1ToPTe33377edtPnDhxKbUAAABcsgqFm7CwsAu2p6SkXFJBAAAAl6JC4Wbu3LmXqw4AAIBKwT03AADAKoQbAABgFcINAACwCuEGAABYhXADAACsQrgBAABWIdwAAACrEG4AAIBVCDcAAMAqjoabDz/8UH369FH9+vXlcrm0YsWK8/bPyMiQy+UqMeXk5FRNwQAAwOc5Gm4KCgrUpk0bvfDCCxVab+/evcrOzvZO4eHhl6lCAABQ3VTou6UqW69evdSrV68KrxceHq7atWtXfkEAAKDaq5b33LRt21ZRUVHq3r271q9ff96+hYWFys/PLzYBAAB7VatwExUVpVmzZmnp0qVaunSpYmJi1K1bN23durXMddLS0hQWFuadYmJiqrBiAABQ1Ry9LFVRTZs2VdOmTb3znTt31oEDBzRt2jS98sorpa6TmpqqsWPHeufz8/MJOAAAWKxahZvSdOzYUR999FGZ7W63W263uworAgAATqpWl6VKs337dkVFRTldBgAA8BGOnrk5deqU9u/f750/ePCgtm/frrp166phw4ZKTU3VV199pX//+9+SpOeff15xcXH6zW9+o9OnT+ull17SunXr9O677zo1BAAA4GMcDTebN2/WjTfe6J0/d2/M0KFDNW/ePGVnZysrK8vbfubMGf3lL3/RV199pSuuuEKtW7fWe++9V2wbAADg183RcNOtWzcZY8psnzdvXrH5Rx55RI888shlrgoAAFRn1f6eGwAAgJ8j3AAAAKsQbgAAgFUINwAAwCqEGwAAYBXCDQAAsArhBgAAWIVwAwAArEK4AQAAViHcAAAAqxBuAACAVQg3AADAKoQbAABgFcINAACwCuEGAABYhXADAACsQrgBAABWIdwAAACrEG4AAIBVCDcAAMAqhBsAAGAVwg0AALAK4QYAAFiFcAMAAKxCuAEAAFYh3AAAAKsQbgAAgFUINwAAwCqEGwAAYBXCDQAAsArhBgAAWIVwAwAArEK4AQAAViHcAAAAqxBuAACAVQg3AADAKoQbAABgFcINAACwCuEGAABYhXADAACsQrgBAABWIdwAAACrOBpuPvzw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k9MlXtDYsWNLXT59+nTdeeedqlevniTpueeeq8qyLllBQYEWL16s/fv3q379+ho0aJB3LL5q69atqlOnjvePlFdeeUWzZs1SVlaWYmNjNXr0aA0aNMjhKi/sT3/6kwYOHKjrr7/e6VIuyYwZM7Rx40b9/ve/16BBg/TKK68oLS1NHo9Ht99+uyZOnKgaNXz73bSbN29WUlKS4uPjFRwcrMzMTN1xxx06c+aM1qxZoxYtWmj16tWqVauW06VWb45dEPsV2b59u/Hz83O6jPPau3ev950Xfn5+5oYbbjBfffWVtz0nJ8fnx7Bq1SoTGBho6tata4KCgsyqVavMVVddZZKSksxNN91k/P39TXp6utNlXpDL5TJt27Y13bp1Kza5XC5z7bXXmm7dupkbb7zR6TIvqHnz5ubbb781xhiTlZVlGjVqZMLCwsy1115r6tata8LDw80XX3zhcJXn17p1a7N27VpjjDH/+7//a4KDg82f//xnM3PmTDNmzBgTEhJiXn75ZYervLBzn+smTZqYp59+2mRnZztdUoVNmjTJ1KpVy/Tr189ERkaap59+2tSrV8889dRTZsqUKeaqq64y48aNc7rMC+rSpYt58sknvfOvvPKK6dSpkzHGmO+++860bdvW/PnPf3aqvAopLCw0r732mhkzZowZNGiQGTRokBkzZoxZvHixKSwsdLQ2wk0leOONN847TZs2zeeDQXJysundu7f55ptvzL59+0zv3r1NXFycOXz4sDGmeoSbxMRE8/jjjxtjjHn11VdNnTp1zGOPPeZtf/TRR0337t2dKq/c0tLSTFxcXIkgVqNGDbN7926Hqqo4l8vlfTHckCFDTOfOnc2JEyeMMcacPHnSJCUlmcGDBztZ4gUFBwebQ4cOGWOMSUhIMC+++GKx9v/85z+mRYsWTpRWIS6Xy7z33nvmgQceMFdeeaUJCAgwt956q3nzzTdNUVGR0+WVS+PGjc3SpUuNMT/9wejv728WLFjgbV+2bJmJj493qrxyCw4ONgcOHPDOFxUVmYCAAJOTk2OMMebdd9819evXd6q8cvP1l9cSbirBub+KXC5XmZOvB4Pw8HCzc+dO77zH4zH33XefadiwoTlw4EC1CDehoaHeD1NRUZGpUaNGsTv5P/30UxMREeFUeRWyceNGc80115i//OUv5syZM8aY6h1urr76avPuu+8Wa1+/fr2JiYlxorRyq1evntm8ebMx5qfPyPbt24u179+/3+ffYWVM8WNx5swZ89prr5kePXoYf39/U79+ffPYY4/5/FvUg4ODvX9sGWNMQECA2bVrl3f+0KFD5oorrnCitAqJjY01H330kXf+66+/Ni6Xy3z//ffGGGMOHjxogoKCnCqv3Hz95bW856YSREVFadmyZfJ4PKVOW7dudbrEC/rhhx+KXat2uVyaOXOm+vTpo65du+rzzz93sLryO/ekmp+fn4KCghQWFuZtq1WrlvLy8pwqrUKuvfZabdmyRd988406dOigXbt2ecdWnZyr+fTp04qKiirWFh0drW+++caJssqtV69emjlzpiSpa9euWrJkSbH2xYsXV5vvADonICBAAwcO1OrVq/XFF19o5MiR+s9//qOmTZs6Xdp5RUZG6r///a8kad++fSoqKvLOS9Lu3burxfetJScn67777tPq1av1/vvva8iQIeratauCg4MlSXv37lV0dLTDVV7Y+vXr9dRTT5V6M3poaKgmTZqk//f//p8Dlf3Et++8qibat2+vLVu2qG/fvqW2u1wuGR+/b7tZs2bavHlziSdxZsyYIUm69dZbnSirQho1aqR9+/apcePGkqTMzEw1bNjQ256VlVXiH1hfFhISovnz52vRokVKSkpSUVGR0yVV2O9+9zvVqFFD+fn52rt3r1q2bOltO3z4sM/fUPzMM8+oS5cu6tq1qzp06KCpU6cqIyNDzZs31969e/Xxxx9r+fLlTpd50Ro2bKgnn3xS48eP13vvved0Oec1ZMgQpaSkqG/fvkpPT9cjjzyihx56SN9++61cLpcmT56s/v37O13mBT311FPKzs5Wnz59VFRUpMTERC1YsMDb7nK5lJaW5mCF5XPu5bU//0z/nNMvryXcVIKHH35YBQUFZbbHx8fr/fffr8KKKu62227Tq6++qrvuuqtE24wZM+TxeDRr1iwHKiu/+++/v1gA+OWHbtWqVdXiaalfGjRokK677jpt2bJFsbGxTpdTbuPHjy82HxISUmz+zTff9Pmnd+rXr69t27bp6aef1ptvviljjDZu3KgjR46oS5cuWr9+vTp06OB0mRcUGxt73seLXS6XunfvXoUVVdyECRO8TxeNHDlSjz76qNq0aaNHHnlE33//vfr06aNJkyY5XeYFhYSE6LXXXtPp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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"liftChart(table[1], labelBars=False)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.10"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}