{ "cells": [ { "cell_type": "markdown", "id": "733b5975-57c9-4e07-b78c-f963940983e7", "metadata": {}, "source": [ "# Notebook-A6 (Data Analytics-3)" ] }, { "cell_type": "code", "execution_count": 2, "id": "e0be02f6-46d8-4248-8b07-26f76114d095", "metadata": {}, "outputs": [], "source": [ "# Import libraries\n", "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score" ] }, { "cell_type": "code", "execution_count": 4, "id": "524d2df1-e1e9-4f3a-860b-22cfb54b6245", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal.lengthsepal.widthpetal.lengthpetal.widthvariety
05.13.51.40.2Setosa
14.93.01.40.2Setosa
24.73.21.30.2Setosa
34.63.11.50.2Setosa
45.03.61.40.2Setosa
\n", "
" ], "text/plain": [ " sepal.length sepal.width petal.length petal.width variety\n", "0 5.1 3.5 1.4 0.2 Setosa\n", "1 4.9 3.0 1.4 0.2 Setosa\n", "2 4.7 3.2 1.3 0.2 Setosa\n", "3 4.6 3.1 1.5 0.2 Setosa\n", "4 5.0 3.6 1.4 0.2 Setosa" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load dataset into Pandas DataFrame\n", "df = pd.read_csv(\"iris.csv\")\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 6, "id": "67649dfb-17ba-4522-a3d7-d19024e65868", "metadata": {}, "outputs": [], "source": [ "# Set independent and dependent variables\n", "X = df.drop('variety', axis=1) # Independent variable\n", "y = df['variety'] # Dependent variable\n", "\n", "# train test split\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 7, "id": "9b47ebcd-8a02-4eb8-86cd-6b0da8612747", "metadata": {}, "outputs": [], "source": [ "# Scale features\n", "scaler = StandardScaler()\n", "X_train_scaled = scaler.fit_transform(X_train)\n", "X_test_scaled = scaler.transform(X_test)" ] }, { "cell_type": "code", "execution_count": 8, "id": "853b93b7-e1bd-44c1-80b8-339579c6b365", "metadata": {}, "outputs": [], "source": [ "# Train Naive Bayes model\n", "model = GaussianNB()\n", "model.fit(X_train_scaled, y_train)\n", "\n", "# Predict\n", "y_pred = model.predict(X_test_scaled)" ] }, { "cell_type": "code", "execution_count": 10, "id": "e4b86c57-eaae-418e-bc36-db7d86400a92", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Evaluate the model\n", "cm = confusion_matrix(y_test, y_pred, labels=model.classes_)\n", "cm_df = pd.DataFrame(cm, index=model.classes_, columns=model.classes_)\n", "\n", "# Plot Confusion Matrix\n", "sns.heatmap(cm_df, annot=True, cmap='Blues', fmt='d')\n", "plt.title('Confusion Matrix')\n", "plt.xlabel('Predicted')\n", "plt.ylabel('Actual')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "id": "9574ce6d-900d-4769-bb22-00319cf32d9a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 1.00\n", "Error Rate: 0.00\n", "Precision (Macro): 1.00\n", "Recall (Macro): 1.00\n" ] } ], "source": [ "# Set variables for accuracy, precision, recall & error rate + print em\n", "accuracy = accuracy_score(y_test, y_pred)\n", "precision = precision_score(y_test, y_pred, average='macro')\n", "recall = recall_score(y_test, y_pred, average='macro')\n", "error_rate = 1 - accuracy\n", "\n", "print(f\"Accuracy: {accuracy:.2f}\")\n", "print(f\"Error Rate: {error_rate:.2f}\")\n", "print(f\"Precision (Macro): {precision:.2f}\")\n", "print(f\"Recall (Macro): {recall:.2f}\")" ] }, { "cell_type": "markdown", "id": "02f9b3c3-cf9a-40c0-af5c-53c8c924af4b", "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 }