Files
DataScienceAndBigDataAnalytics/Notebooks/Notebook-A5 (Data Analytics-2).ipynb
T

301 lines
25 KiB
Plaintext
Executable File

{
"cells": [
{
"cell_type": "markdown",
"id": "a8cd996d-0097-4bfc-8146-066562e039b8",
"metadata": {},
"source": [
"# Notebook-A5 (Data Analytics-2)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "920f58f3",
"metadata": {},
"outputs": [],
"source": [
"# Import libraries\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "2b4a4744",
"metadata": {},
"outputs": [
{
"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>User ID</th>\n",
" <th>Gender</th>\n",
" <th>Age</th>\n",
" <th>EstimatedSalary</th>\n",
" <th>Purchased</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>15624510</td>\n",
" <td>Male</td>\n",
" <td>19</td>\n",
" <td>19000</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>15810944</td>\n",
" <td>Male</td>\n",
" <td>35</td>\n",
" <td>20000</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>15668575</td>\n",
" <td>Female</td>\n",
" <td>26</td>\n",
" <td>43000</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>15603246</td>\n",
" <td>Female</td>\n",
" <td>27</td>\n",
" <td>57000</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>15804002</td>\n",
" <td>Male</td>\n",
" <td>19</td>\n",
" <td>76000</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" User ID Gender Age EstimatedSalary Purchased\n",
"0 15624510 Male 19 19000 0\n",
"1 15810944 Male 35 20000 0\n",
"2 15668575 Female 26 43000 0\n",
"3 15603246 Female 27 57000 0\n",
"4 15804002 Male 19 76000 0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load dataset into DataFram\n",
"df= pd.read_csv(\"Assignment-A5-Social_Network_Ads.csv\")\n",
"df.head() # Print first 5 rows"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d05d408e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['User ID', 'Gender', 'Age', 'EstimatedSalary', 'Purchased'], dtype='object')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print column names\n",
"df.columns"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "5a670ac1",
"metadata": {},
"outputs": [],
"source": [
"# Convert Gender to numeric\n",
"df['Gender'] = df['Gender'].map({'Male': 0, 'Female': 1})\n",
"\n",
"# Features and Target\n",
"X = df[['Gender', 'Age', 'EstimatedSalary']]\n",
"y = df['Purchased']\n",
"# Split the data\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "5f4c8777",
"metadata": {},
"outputs": [],
"source": [
"# Feature Scaling\n",
"sc = StandardScaler()\n",
"X_train = sc.fit_transform(X_train)\n",
"X_test = sc.transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "f9942185",
"metadata": {},
"outputs": [],
"source": [
"# Train the model\n",
"classifier = LogisticRegression()\n",
"classifier.fit(X_train, y_train)\n",
"# Make predictions\n",
"y_pred = classifier.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "8c7fa3e2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Confusion Matrix:\n",
" [[61 2]\n",
" [10 27]]\n",
"True Positives (TP): 27\n",
"False Positives (FP): 2\n",
"True Negatives (TN): 61\n",
"False Negatives (FN): 10\n",
"Accuracy: 0.88\n",
"Error Rate: 0.12\n",
"Precision: 0.93\n",
"Recall: 0.73\n"
]
}
],
"source": [
"# Evaluate the model\n",
"\n",
"# Confusion Matrix\n",
"cm = confusion_matrix(y_test, y_pred)\n",
"print(\"Confusion Matrix:\\n\", cm)\n",
"\n",
"# Extract values\n",
"TN, FP, FN, TP = cm.ravel()\n",
"\n",
"# Metrics\n",
"accuracy = accuracy_score(y_test, y_pred)\n",
"error_rate = 1 - accuracy\n",
"precision = precision_score(y_test, y_pred)\n",
"recall = recall_score(y_test, y_pred)\n",
"\n",
"print(f\"True Positives (TP): {TP}\")\n",
"print(f\"False Positives (FP): {FP}\")\n",
"print(f\"True Negatives (TN): {TN}\")\n",
"print(f\"False Negatives (FN): {FN}\")\n",
"print(f\"Accuracy: {accuracy:.2f}\")\n",
"print(f\"Error Rate: {error_rate:.2f}\")\n",
"print(f\"Precision: {precision:.2f}\")\n",
"print(f\"Recall: {recall:.2f}\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "3e5f5f8a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHHCAYAAADqJrG+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1bklEQVR4nO3deXgUVfr//U8Hk04IWVmyKASQfZF9MLJrEBERDIioMwbEdQCFAGocF0QlDi4gu/JlABFcWEdFRQwDiATBYBS3yCoqJOwJBNJgUr8/fOjHJgG6m650KN8vr7oucqr6nLt6LiY39zmnymYYhiEAAAAvBPg7AAAAcOkikQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQAAAF4jkQBMtG3bNl1//fWKiIiQzWbT8uXLfdr/7t27ZbPZNHfuXJ/2eynr2rWrunbt6u8wgL8MEglY3o4dO3T//ferbt26Cg4OVnh4uDp06KBXX31VJ0+eNHXslJQUbd26Vc8//7zmz5+vtm3bmjpeeRo0aJBsNpvCw8PL/B63bdsmm80mm82ml156yeP+9+7dq7Fjxyo7O9sH0QIwy2X+DgAw04oVK3TrrbfKbrfrrrvuUrNmzXTq1CmtX79eY8aM0XfffafXX3/dlLFPnjypzMxM/etf/9KwYcNMGSMhIUEnT55UYGCgKf1fyGWXXaYTJ07o/fff14ABA1zOLViwQMHBwSoqKvKq77179+qZZ55R7dq11bJlS7c/98knn3g1HgDvkEjAsnbt2qWBAwcqISFBq1evVlxcnPPc0KFDtX37dq1YscK08Q8cOCBJioyMNG0Mm82m4OBg0/q/ELvdrg4dOuitt94qlUgsXLhQvXr10pIlS8ollhMnTqhy5coKCgoql/EA/IGpDVjWhAkTdPz4cc2ePdsliTijXr16evjhh50///7773r22Wd15ZVXym63q3bt2nr88cflcDhcPle7dm3ddNNNWr9+vf72t78pODhYdevW1RtvvOG8ZuzYsUpISJAkjRkzRjabTbVr15b0x5TAmT//2dixY2Wz2VzaVq1apY4dOyoyMlJVqlRRw4YN9fjjjzvPn2uNxOrVq9WpUyeFhoYqMjJSffr00Q8//FDmeNu3b9egQYMUGRmpiIgIDR48WCdOnDj3F3uWO+64Qx999JGOHj3qbNu8ebO2bdumO+64o9T1hw8f1ujRo9W8eXNVqVJF4eHh6tmzp77++mvnNWvWrFG7du0kSYMHD3ZOkZy5z65du6pZs2bKyspS586dVblyZef3cvYaiZSUFAUHB5e6/x49eigqKkp79+51+14BlEYiAct6//33VbduXV1zzTVuXX/PPffoqaeeUuvWrTVx4kR16dJF6enpGjhwYKlrt2/frv79+6t79+56+eWXFRUVpUGDBum7776TJCUnJ2vixImSpNtvv13z58/XpEmTPIr/u+++00033SSHw6Fx48bp5Zdf1s0336zPP//8vJ/79NNP1aNHD+3fv19jx45VamqqNmzYoA4dOmj37t2lrh8wYICOHTum9PR0DRgwQHPnztUzzzzjdpzJycmy2WxaunSps23hwoVq1KiRWrduXer6nTt3avny5brpppv0yiuvaMyYMdq6dau6dOni/KXeuHFjjRs3TpJ03333af78+Zo/f746d+7s7OfQoUPq2bOnWrZsqUmTJqlbt25lxvfqq6+qevXqSklJUXFxsSTptdde0yeffKIpU6YoPj7e7XsFUAYDsKD8/HxDktGnTx+3rs/OzjYkGffcc49L++jRow1JxurVq51tCQkJhiRj3bp1zrb9+/cbdrvdGDVqlLNt165dhiTjxRdfdOkzJSXFSEhIKBXD008/bfz5r+TEiRMNScaBAwfOGfeZMebMmeNsa9mypVGjRg3j0KFDzravv/7aCAgIMO66665S4919990ufd5yyy1G1apVzznmn+8jNDTUMAzD6N+/v3HdddcZhmEYxcXFRmxsrPHMM8+U+R0UFRUZxcXFpe7Dbrcb48aNc7Zt3ry51L2d0aVLF0OSMXPmzDLPdenSxaVt5cqVhiTjueeeM3bu3GlUqVLF6Nu37wXvEcCFUZGAJRUUFEiSwsLC3Lr+ww8/lCSlpqa6tI8aNUqSSq2laNKkiTp16uT8uXr16mrYsKF27tzpdcxnO7O24r///a9KSkrc+sy+ffuUnZ2tQYMGKTo62tl+1VVXqXv37s77/LMHHnjA5edOnTrp0KFDzu/QHXfccYfWrFmj3NxcrV69Wrm5uWVOa0h/rKsICPjj/3qKi4t16NAh57TNli1b3B7Tbrdr8ODBbl17/fXX6/7779e4ceOUnJys4OBgvfbaa26PBeDcSCRgSeHh4ZKkY8eOuXX9zz//rICAANWrV8+lPTY2VpGRkfr5559d2mvVqlWqj6ioKB05csTLiEu77bbb1KFDB91zzz2KiYnRwIED9e677543qTgTZ8OGDUuda9y4sQ4ePKjCwkKX9rPvJSoqSpI8upcbb7xRYWFheuedd7RgwQK1a9eu1Hd5RklJiSZOnKj69evLbrerWrVqql69ur755hvl5+e7Pebll1/u0cLKl156SdHR0crOztbkyZNVo0YNtz8L4NxIJGBJ4eHhio+P17fffuvR585e7HgulSpVKrPdMAyvxzgzf39GSEiI1q1bp08//VT/+Mc/9M033+i2225T9+7dS117MS7mXs6w2+1KTk7WvHnztGzZsnNWIyRp/PjxSk1NVefOnfXmm29q5cqVWrVqlZo2bep25UX64/vxxFdffaX9+/dLkrZu3erRZwGcG4kELOumm27Sjh07lJmZecFrExISVFJSom3btrm05+Xl6ejRo84dGL4QFRXlssPhjLOrHpIUEBCg6667Tq+88oq+//57Pf/881q9erX+97//ldn3mThzcnJKnfvxxx9VrVo1hYaGXtwNnMMdd9yhr776SseOHStzgeoZixcvVrdu3TR79mwNHDhQ119/vZKSkkp9J+4mde4oLCzU4MGD1aRJE913332aMGGCNm/e7LP+gb8yEglY1iOPPKLQ0FDdc889ysvLK3V+x44devXVVyX9UZqXVGpnxSuvvCJJ6tWrl8/iuvLKK5Wfn69vvvnG2bZv3z4tW7bM5brDhw+X+uyZBzOdvSX1jLi4OLVs2VLz5s1z+cX87bff6pNPPnHepxm6deumZ599VlOnTlVsbOw5r6tUqVKpaseiRYv022+/ubSdSXjKSro89eijj2rPnj2aN2+eXnnlFdWuXVspKSnn/B4BuI8HUsGyrrzySi1cuFC33XabGjdu7PJkyw0bNmjRokUaNGiQJKlFixZKSUnR66+/rqNHj6pLly7atGmT5s2bp759+55za6E3Bg4cqEcffVS33HKLHnroIZ04cUIzZsxQgwYNXBYbjhs3TuvWrVOvXr2UkJCg/fv3a/r06briiivUsWPHc/b/4osvqmfPnkpMTNSQIUN08uRJTZkyRRERERo7dqzP7uNsAQEBeuKJJy543U033aRx48Zp8ODBuuaaa7R161YtWLBAdevWdbnuyiuvVGRk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MGCAIiMjFR0drT59+mj37t3O/oqLi5WamqrIyEhVrVpVjzzyiM5+8v3ZUxsOh0OPPvqoatasKbvdrnr16mn27NnavXu3810QUVFRstlsGjRokKQ/3uCanp6uOnXqKCQkRC1atNDixYtdxvnwww/VoEEDhYSEqFu3bi5xArAmEgnAz0JCQnTq1ClJUkZGhnJycrRq1Sp98MEHOn36tHr06KGwsDB99tln+vzzz1WlShXdcMMNzs+8/PLLmjt3rv7zn/9o/fr1Onz4sJYtW3beMe+66y699dZbmjx5sn744Qe99tprqlKlimrWrKklS5ZIknJycrRv3z69+uqrkqT09HS98cYbmjlzpr777juNHDlSf//737V27VpJfyQ8ycnJ6t27t7Kzs3XPPffoscceM+trA1BRGADKTUpKitGnTx/DMAyjpKTEWLVqlWG3243Ro0cbKSkpRkxMjOFwOJzXz58/32jYsKFRUlLibHM4HEZISIixcuVKwzAMIy4uzpgwYYLz/OnTp40rrrjCOY5hGEaXLl2Mhx9+2DAMw8jJyTEkGatWrSozxv/973+GJOPIkSPOtqKiIqNy5crGhg0bXK4dMmSIcfvttxuGYRhpaWlGkyZNXM4/+uijpfoCYC2skQDK2QcffKAqVaro9OnTKikp0R133KGxY8dq6NChat68ucu6iK+//lrbt29XWFiYSx9FRUXasWOH8vPztW/fPpfXs1922WVq27ZtqemNM7Kzs1WpUiV16dLF7Zi3b9+uEydOqHv37i7tp06dUqtWrSRJP/zwQ6nXxCcmJro9BoBLE4kEUM66deumGTNmKCgoSPHx8brssv//r2FoaKjLtcePH1ebNm20YMGCUv1Ur17dq/FDQkI8/szx48clSStWrNDll1/ucs5ut3sVBwBrIJEAylloaKjq1avn1rWtW7fWO++8oxo1aig8PLzMa+Li4vTFF1+oc+fOkqTff/9dWVlZat26dZnXN2/eXCUlJVq7dq2SkpJKnT9TESkuLna2NWnSRHa7XXv27DlnJaNx48Z67733XNo2btx44ZsEcEljsSVQgd15552qVq2a+vTpo88++0y7du3SmjVr9NBDD+nXX3+VJD388MN64YUXtHz5cv3444/65z//ed5nQNSuXVspKSm6++67tXz5cmef7777riQpISFBNptNH3zwgQ4cOKDjx48rLCxMo0eP1siRIzVv3jzt2LFDW7Zs0ZQpUzRv3jxJ0gMPPKBt27ZpzJgxysnJ0cKFCzV37lyzvyIAfkYiAVRglStX1rp161SrVi0lJyercePGGjJkiIqKipwVilGjRukf//iHUlJSlJiYqLCwMN1yyy3n7XfGjBnq37+//vnPf6pRo0a69957VVhYKEm6/PLL9cwzz+ixxx5TTEyMhg0bJkl69tln9eSTTyo9PV2NGzfWDTfcoBUrVqhOnTqSpFq1amnJkiVavny5WrRooZkzZ2r8+PEmfjsAKgKbca4VWQAAABdARQIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHiNRAIAAHjt/wELDIfqjAQXOQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Visualize\n",
"sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')\n",
"plt.xlabel(\"Predicted\")\n",
"plt.ylabel(\"Actual\")\n",
"plt.title(\"Confusion Matrix\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "d693c1df-4f7c-4500-973f-4005f5c4ceca",
"metadata": {},
"source": [
"---"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.8.20"
}
},
"nbformat": 4,
"nbformat_minor": 5
}