diff --git a/Credit Card Fraud Detection Using Machine Learning/Code/Credit Card Fraud Detection - XGBoost.ipynb b/Credit Card Fraud Detection Using Machine Learning/Code/Credit Card Fraud Detection - XGBoost.ipynb new file mode 100644 index 0000000..24a1c24 --- /dev/null +++ b/Credit Card Fraud Detection Using Machine Learning/Code/Credit Card Fraud Detection - XGBoost.ipynb @@ -0,0 +1,296 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "d66194a0", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a406b74c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Time V1 V2 V3 V4 V5 V6 V7 \\\n", + "0 0.0 -1.359807 -0.072781 2.536347 1.378155 -0.338321 0.462388 0.239599 \n", + "1 0.0 1.191857 0.266151 0.166480 0.448154 0.060018 -0.082361 -0.078803 \n", + "2 1.0 -1.358354 -1.340163 1.773209 0.379780 -0.503198 1.800499 0.791461 \n", + "3 1.0 -0.966272 -0.185226 1.792993 -0.863291 -0.010309 1.247203 0.237609 \n", + "4 2.0 -1.158233 0.877737 1.548718 0.403034 -0.407193 0.095921 0.592941 \n", + "\n", + " V8 V9 ... V21 V22 V23 V24 V25 \\\n", + "0 0.098698 0.363787 ... -0.018307 0.277838 -0.110474 0.066928 0.128539 \n", + "1 0.085102 -0.255425 ... -0.225775 -0.638672 0.101288 -0.339846 0.167170 \n", + "2 0.247676 -1.514654 ... 0.247998 0.771679 0.909412 -0.689281 -0.327642 \n", + "3 0.377436 -1.387024 ... -0.108300 0.005274 -0.190321 -1.175575 0.647376 \n", + "4 -0.270533 0.817739 ... -0.009431 0.798278 -0.137458 0.141267 -0.206010 \n", + "\n", + " V26 V27 V28 Amount Class \n", + "0 -0.189115 0.133558 -0.021053 149.62 0 \n", + "1 0.125895 -0.008983 0.014724 2.69 0 \n", + "2 -0.139097 -0.055353 -0.059752 378.66 0 \n", + "3 -0.221929 0.062723 0.061458 123.50 0 \n", + "4 0.502292 0.219422 0.215153 69.99 0 \n", + "\n", + "[5 rows x 31 columns]\n" + ] + } + ], + "source": [ + "df = pd.read_csv(\"C:/Users/Acer/Downloads/creditcard.csv\")\n", + "print(df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d49b8848", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 284315\n", + "1 492\n", + "Name: Class, dtype: int64\n" + ] + } + ], + "source": [ + "print(df[\"Class\"].value_counts())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bf488eb3", + "metadata": {}, + "outputs": [], + "source": [ + "X_xgb = df.drop(['Class', 'Time', 'Amount'], axis=1)\n", + "y_xgb = df['Class']" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "327bf0da", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,\n", + " colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,\n", + " early_stopping_rounds=None, enable_categorical=False,\n", + " eval_metric=None, gamma=0, gpu_id=-1, grow_policy='depthwise',\n", + " importance_type=None, interaction_constraints='',\n", + " learning_rate=0.300000012, max_bin=256, max_cat_to_onehot=4,\n", + " max_delta_step=0, max_depth=5, max_leaves=0, min_child_weight=1,\n", + " missing=nan, monotone_constraints='()', n_estimators=100,\n", + " n_jobs=0, num_parallel_tree=1, predictor='auto', random_state=0,\n", + " reg_alpha=0, reg_lambda=1, ...)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "import xgboost as xgb\n", + "X_train_xgb, X_test_xgb, y_train_xgb, y_test_xgb = train_test_split(X_xgb, y_xgb, test_size = 0.1, random_state = 42, stratify=y_xgb)\n", + "model1 = xgb.XGBClassifier(max_depth=5, scale_pos_weight=100)\n", + "model1.fit(X_train_xgb, y_train_xgb)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4d2a1a48", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 0, ..., 0, 0, 0])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_pred_xgb = model1.predict(X_test_xgb)\n", + "y_pred_xgb" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "068e29b2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[28429, 3],\n", + " [ 6, 43]], dtype=int64)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "conf_matrix_xgb = confusion_matrix(y_test_xgb, y_pred_xgb)\n", + "conf_matrix_xgb" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "c5c3279a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAGFCAYAAAAbyE8yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAoaUlEQVR4nO3debyVVdn/8c8XUHFCUNQMUdTQ0kxUnNMcCrUs00wtSzITe3Ieyqmc+2U5m8MjOaLmUGqSY0QOOYOKKOJAKgoizqjQI8O5fn/ca9P2dCbYZ+99Nuv79nW/zt7rHtY6gPvaa13rXrciAjMzy1O3ejfAzMzqx0HAzCxjDgJmZhlzEDAzy5iDgJlZxhwEzMwy5iBgnULSkpL+KmmGpD9VcJ19JP2tM9tWD5LukjS03u0wa4+DQGYkfV/SWEkfS5qWPqy+3AmX3gNYGVghIr67sBeJiOsiYkgntOdTJG0rKSTd2qx8g1R+Xwevc7Kka9s7LiJ2joirF7K5ZjXjIJARSUcC5wH/j+IDezXgYmDXTrj86sCLETG3E65VLW8DW0haoaxsKPBiZ1Wggv+/sobhf6yZkLQccCpwUETcEhEzI2JORPw1In6ejllC0nmS3kjbeZKWSPu2lTRF0lGS3kq9iP3SvlOAE4G9Ug9j/+bfmCUNSN+4e6T3P5L0sqSPJL0iaZ+y8gfLzttS0pg0zDRG0pZl++6TdJqkh9J1/iapbxt/DLOBvwB7p/O7A3sB1zX7szpf0uuSPpT0hKStU/lOwPFlv+fTZe34taSHgFnAmqnsJ2n/JZJuLrv+byWNlqSO/v2ZVYuDQD62AHoCt7ZxzAnA5sAgYANgU+CXZfs/AywH9AP2By6S1CciTqLoXdwYEctExOVtNUTS0sAFwM4RsSywJTCuheOWB+5Ix64AnAPc0eyb/PeB/YCVgMWBo9uqGxgB7Jte7wg8C7zR7JgxFH8GywN/BP4kqWdE3N3s99yg7JwfAsOAZYHJza53FLB+CnBbU/zZDQ2v2WJdgINAPlYA3mlnuGYf4NSIeCsi3gZOofhwK5mT9s+JiDuBj4F1FrI9TcAXJS0ZEdMiYkILx3wDeCkiromIuRFxPfA88M2yY66MiBcj4t/ATRQf3q2KiIeB5SWtQxEMRrRwzLUR8W6q82xgCdr/Pa+KiAnpnDnNrjeL4s/xHOBa4JCImNLO9cxqwkEgH+8CfUvDMa34LJ/+Fjs5lc2/RrMgMgtYZkEbEhEzKYZhfgpMk3SHpM93oD2lNvUre//mQrTnGuBgYDta6BlJOlrSxDQE9QFF76etYSaA19vaGRGPAS8DoghWZl2Cg0A+HgE+Ab7dxjFvUCR4S1bjv4dKOmomsFTZ+8+U74yIeyLia8AqFN/u/9CB9pTaNHUh21RyDfAz4M70LX2+NFzzC2BPoE9E9AZmUHx4A7Q2hNPm0I6kgyh6FG+k65t1CQ4CmYiIGRTJ24skfVvSUpIWk7SzpN+lw64HfilpxZRgPZFi+GJhjAO2kbRaSkofV9ohaWVJu6bcwCcUw0pNLVzjTmDtNK21h6S9gHWB2xeyTQBExCvAVyhyIM0tC8ylmEnUQ9KJQK+y/dOBAQsyA0jS2sDpwA8ohoV+IWnQwrXerHM5CGQkjW8fSZHsfZtiCONgihkzUHxQjQXGA88AT6ayhalrFHBjutYTfPqDu1tqxxvAexQfyP/TwjXeBXahSKy+S/ENepeIeGdh2tTs2g9GREu9nHuAuymmjU4G/o9PD/WUboR7V9KT7dWTht+uBX4bEU9HxEsUM4yuKc28MqsneYKCmVm+3BMwM8uYg4CZWcYcBMzMMuYgYGaWMQcBM7OMtXX3aN3NeedlT12y/7LkZ7eudxOsC5o7e2rFC/JV+pmzWN81G25RwC4dBMzMaqppXr1bUHMOAmZmJdHSjeuLNucEzMwy5p6AmVlJU349AQcBM7MkMhwOchAwMytxT8DMLGMZ9gScGDYzy5h7AmZmJb5PwMwsYxkOBzkImJmVZJgYdk7AzCxj7gmYmSW+T8DMLGcZDgc5CJiZlbgnYGaWsQyniDoxbGaWMfcEzMxKPBxkZpYxJ4bNzDLmnoCZWcYy7Ak4MWxmljH3BMzMkoj8pog6CJiZlTgnYGaWMecEzMwsJ+4JmJmVeDjIzCxjGa4d5CBgZlbinoCZWcacGDYzs5y4J2BmVuLhIDOzjGU4HOQgYGZWkmEQcE7AzCxjDgJmZknEvIq29kjqL+leSc9JmiDpsFR+sqSpksal7etl5xwnaZKkFyTtWFa+UyqbJOnYsvI1JD2Wym+UtHhbbXIQMDMraWqqbGvfXOCoiFgX2Bw4SNK6ad+5ETEobXcCpH17A+sBOwEXS+ouqTtwEbAzsC7wvbLr/DZd63PA+8D+bTXIQcDMrCSaKtvau3zEtIh4Mr3+CJgI9GvjlF2BGyLik4h4BZgEbJq2SRHxckTMBm4AdpUkYHvgz+n8q4Fvt9UmBwEzs5IKewKShkkaW7YNa60qSQOADYHHUtHBksZLukJSn1TWD3i97LQpqay18hWADyJibrPyVjkImJl1kogYHhGDy7bhLR0naRngZuDwiPgQuARYCxgETAPOrlWbPUXUzKykBjeLSVqMIgBcFxG3AETE9LL9fwBuT2+nAv3LTl81ldFK+btAb0k9Um+g/PgWuSdgZlZS5cRwGrO/HJgYEeeUla9SdthuwLPp9Uhgb0lLSFoDGAg8DowBBqaZQItTJI9HRkQA9wJ7pPOHAre11Sb3BMzMSqrfE9gK+CHwjKRxqex4itk9g4AAXgUOBIiICZJuAp6jmFl0UKS5qJIOBu4BugNXRMSEdL1jgBsknQ48RRF0WqUicHRNc955ues2zupmyc9uXe8mWBc0d/ZUVXqNf991QUWfOUvufGjFbag1DweZmWXMw0FmZiUZrh3kIGBmVuKlpM3MMpZhT8A5ATOzjLknYGZW4uEgM7OMZTgc5CBgZlbinoCZWcYy7Ak4MWxmljH3BMzMSjLsCTgImJmVdOG11KrFQcDMrMQ9gc4j6SOKZVFbFBG9qlW3mdlCcRDoPBGxLICk0ygel3YNIGAfYJU2TjUzsxqpxXDQtyJig7L3l0h6GjixBnWbmXVchvcJ1GKK6ExJ+0jqLqmbpH2AmTWo18xswVT58ZJdUS2CwPeBPYHpaftuKjMz61oiKtsaUNWHgyLiVWDXatdjZmYLrupBQNKVtDBLKCJ+XO26zcwWSIMO6VSiFonh28te9wR2A96oQb1mZgvGQaDzRcTN5e8lXQ88WO16zcwWWIazg+pxx/BAYKU61Gtm1qZoaszkbiVqkRMo3Tms9PNN4Jhq12tmZu2rxXDQstWuw8ysUzgnUB2S+lAMA/UslUXEA7Wo28ysw5wT6HySfgIcBqwKjAM2Bx4Btq923WZmCyTDnEAt7hg+DNgEmBwR2wEbAh/UoF4zswXjZSOq4v8i4v8AJC0REc8D69SgXjMza0ctcgJTJPUG/gKMkvQ+MLkG9ZqZLZgG/TZfiVrMDtotvTxZ0r3AcsDd1a7XzGyBNegicJWoahCQ1B2YEBGfB4iI+6tZn5lZRdwT6FwRMU/SC5JWi4jXqllXI5g2/W2OP+0s3n3/fYTYY9ed+eGe3+b5F//FqWf+nk9mz6F79+786uiDWH/d/6RNnpn4Aj848EjOPOVYhmy3Nc+/+C9OO+tCPp45i27duzFs373Z+atfAeCxJ8Zx1oWXMWfOXNZd53OcetwR9OjRvV6/slXJEksswX3/uJnFl1iCHj26c8std3DKqWfXu1nWgGqRE+gDTJD0OGUPk4mIb9Wg7i6lR/fu/PyQA1h3nc8xc+Ys9tz/ULbcZEPOvvhy/ufH+7D1FpvwwMOPc/bFl3PVhb8DYN68eZx78ZVsuclG86/Ts+cS/L9fHc3q/fvx1tvvsuf+h7DVZhuzzNJLcfzpZ3P5+b9hwGqrcuEfRnDbXX/nO9/csV6/slXJJ598wleH7MnMmbPo0aMHD9x3K3fffS+PPf5kvZvW2DKcIlrNB833iIi5wK+qVUejWbHv8qzYd3kAll56KdZcvT/T334XSXw8cxYAH8+cxUp9V5h/zh//PJKvbbsVz058cX7ZgNVWnf96pRVXYPk+vXn/gxnMnTuXxXr0mL9/i0024rJrbnQQWETNTP9mFlusBz0WW4zIcDy702V4s1g1p4g+DvPzAHtExP3lWxXrbQhTp01n4kv/4kvrrcMxhx3I2Rdfzg67/ZCzLryMw3/6IwCmv/0Oox94mL12+0ar13nmuReYM2cu/futQp/eyzFvXtP8gPG3+x7kzbfeqcWvY3XQrVs3xo75G9Omjmf06Ad4fMxT9W5S42uKyrYGVM0goLLXW3X4JGmYpLGSxl424voqNKv+Zs36N0eccDrHHHogyyy9NDfeegfHHDKM0bdewy8OHcaJvzkPgN+efylH/M+P6dat5b+mt995j+NOPZPTjz+Cbt26IYkzTz2W310wnL1/chhLL7Vkq+da42tqamLwJkNYfY3BbDJ4Q9Zbz7ffVCqamiraGlE1cwILFRYjYjgwHGDOOy83Zmhtw5y5czn8hNP5xpDt+Nq2RWwcedffOe7wnwKw4/Zbc9IZ5wEw4fmX+PlJZwDw/owP+ecjY+jevTs7bLMlH8+cyc9+fiKHHjiUDb74hfnXH/TFLzDikrMAeOixJ5j8+tQa/nZWDzNmfMh99z/EjkO2ZcKEF+rdHGsw1QwCn5c0nqJHsFZ6TXofEfGlKtbdJUUEJ/7mPNZcvT9D9959fvmKfVdgzFPPsOlGX+KxJ8axev9+ANzz56vmH3PC6Wfzla02ZYdttmTOnDkcdtxpfGunHRiy3dafquPd9z9ghT69mT17Nldc9yeGDd27Jr+b1VbfvsszZ85cZsz4kJ49e/LVHbbhzLMurnezGl+DDulUoppB4AvtH5KXp8ZP4K93j2bgWgP4ztCDADjswKGccsyhnHH+pcydN48lFl+ck35xaJvXufsf/+SJcc/ywYyP+Mudfwfg1yccyefXXosrr/sz9z/8ONHUxF67fYPNNh5U7V/L6mCVVVbmisvPo3v3bnTr1o0///mv3JH+LVgFMkwMq94zCiQ9EhFbtLRvURwOssot+dmt2z/IsjN39lS1f1TbZp66T0WfOUufeF3Fbai1ejxesrme7R9iZlYDDZrcrURXmDrib/tmZnXSFXoCZmZdgxPDddFwY2hmtojKMDHcFYLAD+vdADMzIMueQNVzApJ2l/SSpBmSPpT0kaQPS/sj4tlqt8HMzFpWi57A74BvRsTEGtRlZrbQGnXph0rUYnbQdAcAM2sIVV5ATlJ/SfdKek7SBEmHpfLlJY1KoyajJPVJ5ZJ0gaRJksZL2qjsWkPT8S9JGlpWvrGkZ9I5F0hqM+9aiyAwVtKNkr6XhoZ2l7R7+6eZmdVY9VcRnQscFRHrApsDB0laFzgWGB0RA4HR6T3AzsDAtA0DLoEiaAAnAZsBmwInlQJHOuaAsvN2aqtBtRgO6gXMAoaUlQVwSw3qNjPruCrPDoqIacC09PojSROBfsCuwLbpsKuB+4BjUvmIKJZ2eFRSb0mrpGNHRcR7AJJGATtJug/oFRGPpvIRwLeBu1prUy0eNL9fteswM2s0kgYAGwKPASunAAHwJrByet0PeL3stCmprK3yKS2Ut6oWs4NWlXSrpLfSdrOkVds/08ysxiocDip/HkrahrVUjaRlgJuBwyPiw/J96Vt/zeaq1iIncCUwEvhs2v6ayszMupRoisq2iOERMbhsG968DkmLUQSA6yKiNCw+PQ3zkH6+lcqnAv3LTl81lbVVvmoL5a2qRRBYMSKujIi5absKWLEG9ZqZLZjqzw4ScDkwMSLOKds1EijN8BkK3FZWvm+aJbQ5MCMNG90DDJHUJyWEhwD3pH0fSto81bVv2bVaVIvE8LuSfgCUnhX5PeDdGtRrZrZgqn+fwFYUqyQ8I2lcKjseOAO4SdL+wGRgz7TvTuDrwCSKCTb7AUTEe5JOA8ak404tJYmBnwFXAUtSJIRbTQpDDZ4nIGl14PfAFhTjXA8Dh0bEa+2d6+cJWEv8PAFrSWc8T+Cjg79e0WfOshfe2XBrodVidtBk4FvVrsfMrGIZrh1UtSAg6cQ2dkdEnFatus3MFoqDQKea2ULZ0sD+wAqAg4CZdSn1ftxuPVQtCETE2aXXkpYFDqNIatwAnN3aeWZmVjtVzQmk9S2OBPahuBV6o4h4v5p1mpktNA8HdR5JZwK7A8OB9SPi42rVZWbWKRwEOtVRwCfAL4ETylYzFUViuFcV6zYzW2DhINB5IqIWdyObmXWeDIOAP6jNzDLWFR40b2bWNeT3dEkHATOzEucEzMxy5iBgZpaxDIeDnBg2M8uYewJmZolzAmZmOctwOMhBwMwsybEn4JyAmVnG3BMwMyvxcJCZWb7CQcDMLGMOAmZm+cqxJ+DEsJlZxtwTMDMrybAn4CBgZpbkOBzkIGBmluQYBJwTMDPLmHsCZmZJjj0BBwEzs5JQvVtQcw4CZmaJewJmZhmLpvx6Ak4Mm5llzD0BM7PEw0FmZhkLJ4bNzPLlnoCZWcacGDYzs6y4J2BmlkR+z5l3EDAzK8lxOMhBwMwsyTEIOCdgZpYx9wTMzBLnBMzMMpbjcJCDgJlZ4juGzcwyluMdw04Mm5llzD0BM7OkycNBZmb5ck6gjKTfA61OmIqIQ6vSIjOzOqn27CBJVwC7AG9FxBdT2cnAAcDb6bDjI+LOtO84YH9gHnBoRNyTyncCzge6A5dFxBmpfA3gBmAF4AnghxExu602tdUTGLsQv6OZWcOqwX0CVwEXAiOalZ8bEWeVF0haF9gbWA/4LPB3SWun3RcBXwOmAGMkjYyI54DfpmvdIOl/KQLIJW01qNUgEBFXd/S3MjOz9kXEA5IGdPDwXYEbIuIT4BVJk4BN075JEfEygKQbgF0lTQS2B76fjrkaOJmFDQIlklYEjgHWBXqW/TLbd/AXMTNrCHW8WexgSftSjMAcFRHvA/2AR8uOmZLKAF5vVr4ZxRDQBxExt4XjW9WRKaLXAROBNYBTgFeBMR04z8ysoTSFKtokDZM0tmwb1oFqLwHWAgYB04Czq/k7NteR2UErRMTlkg6LiPuB+yU5CJjZIqfS2UERMRwYvoDnTC+9lvQH4Pb0dirQv+zQVVMZrZS/C/SW1CP1BsqPb1VHegJz0s9pkr4haUNg+Q6cZ2Zm7ZC0Stnb3YBn0+uRwN6SlkizfgYCj1OMxAyUtIakxSmSxyMjIoB7gT3S+UOB29qrvyM9gdMlLQccBfwe6AUc0YHzzMwaSrVnB0m6HtgW6CtpCnASsK2kQRRT8l8FDizaEhMk3QQ8B8wFDoqIeek6BwP3UEwRvSIiJqQqjgFukHQ68BRwebttii68duqcd17uuo2zulnys1vXuwnWBc2dPbXirO641b9V0WfOoMkjG+5us47MDrqSFm4ai4gfV6VFZmZ14juGW3Z72eueFGNWb1SnOWZm9dOFB0aqpt0gEBE3l79PY1oPVq1FZmZWMwuzgNxAYKXOboiZWb15FdEWSPqIT+cE3qTIQFedE4BmVkvOCbQgIpatRUPMzOotx55AuzeLSRrdkTIzs0YXFW6NqK3nCfQElqK4qaEPUAqRvejAokRmZtb1tTUcdCBwOMU61k/wnyDwIcV62GZmi5Qch4Paep7A+cD5kg6JiN/XsE1mZnWRY2K4IwvINUnqXXojqY+kn1WvSWZm9dFU4daIOhIEDoiID0pv0sMODqhai8zMrGY6crNYd0lKy5QiqTuweHWbZWZWe0F+w0EdCQJ3AzdKujS9PxC4q3pNMjOrj6ZGnedZgY4EgWOAYcBP0/vxwGeq1iIzszppyrAn0G5OICKagMcoHnawKcXT7CdWt1lmZrUXqKKtEbV1s9jawPfS9g5wI0BEbFebppmZWbW1NRz0PPBPYJeImAQgyY+VNLNFVqNO86xEW8NBuwPTgHsl/UHSDtCg/R0zsw7IcTio1SAQEX+JiL2Bz1M8wf5wYCVJl0gaUqP2mZnVjG8Wa0FEzIyIP0bEN4FVKZ5gX5PnCZiZ1ZKDQDsi4v2IGB4RO1SrQWZmVjsL83hJM7NFUqOO61fCQcDMLGnKLwY4CJiZlfiOYTMzy4p7AmZmSYbrxzkImJmVNOo0z0o4CJiZJU3KLyfgIGBmluQ4HOTEsJlZxtwTMDNLnBMwM8uYbxYzM8tYjjeLOQiYmSVODJuZWVbcEzAzS5wTMDPLmGcHmZllzDkBMzPLinsCZmaJcwJmZhlzTsDMLGMOAmZmGYsMh4OcGDYzy5h7AmZmiYeDzMwy5iBgZpaxHG8WcxAwM0tyvE/AiWEzsxqRdIWktyQ9W1a2vKRRkl5KP/ukckm6QNIkSeMlbVR2ztB0/EuShpaVbyzpmXTOBZLaDWsOAmZmSVOFWwdcBezUrOxYYHREDARGp/cAOwMD0zYMuASKoAGcBGwGbAqcVAoc6ZgDys5rXtd/cRAwM0uqHQQi4gHgvWbFuwJXp9dXA98uKx8RhUeB3pJWAXYERkXEexHxPjAK2Cnt6xURj0ZEACPKrtUqBwEzsyQq3CQNkzS2bBvWgWpXjohp6fWbwMrpdT/g9bLjpqSytsqntFDeJieGzcw6SUQMB4ZXcH5IqukkJfcEzMySJlW2LaTpaSiH9POtVD4V6F923KqprK3yVVsob5ODgJlZUoPEcEtGAqUZPkOB28rK902zhDYHZqRho3uAIZL6pITwEOCetO9DSZunWUH7ll2rVR4OMjNLqj0OI+l6YFugr6QpFLN8zgBukrQ/MBnYMx1+J/B1YBIwC9gPICLek3QaMCYdd2pElJLNP6OYgbQkcFfa2m5TkUTumnos3q/rNs7MupS5s6dWfKvXr1ffp6LPnBMmX9dwt5t5OMjMLGMeDjIzS7yAnJlZxnIcf3YQMDNLcuwJOCdgZpYx9wTMzJIcl5J2EDAzS5oyzAo4CJiZJfmFAAcBM7P5nBg2M7OsuCdgZpY4J2BmlrH8QoCDgJnZfDnmBBwEzMySHIeDnBg2M8uYewJmZkl+/YAqBgFJy7e1v+xJOGZmXYJzAp3rCYrAKmA14P30ujfwGrBGFes2M1tgkWFfoGo5gYhYIyLWBP4OfDMi+kbECsAuwN+qVa+ZmXVcLRLDm0fEnaU3EXEXsGUN6jUzWyBNFW6NqBaJ4Tck/RK4Nr3fB3ijBvWamS0QTxGtju8BKwK3pm2lVGZm1qVEhVsjqnpPIM0COqza9ZiZVSrHnkDVg4Cke2khSEbE9tWue1Gx3HK9GH7pWay33jpEBAcccBSPPvZEvZtlddCtWzcee/Qu3pj6JrvuNpThl57FxhtvgAQvvfQKP97/cGbOnFXvZloDqUVO4Oiy1z2B7wBza1DvIuPcc07lnnvuZa+9h7HYYoux1FJL1rtJVieHHvITnn/+JXotuywARx19Mh999DEAZ/3uJA762X787syL6tnEhtaoyd1KVD0nEBFPlG0PRcSRwLbVrndR0avXsmz95c244srrAZgzZw4zZnxY51ZZPfTrtwpf33kHrrji+vllpQAA0HPJnkTkN5zRmaLC/xpR1YOApOXLtr6SdgSWq3a9i4o11liNd955l8svO5cxj9/Dpf97pnsCmTrn7FM49rjTaWr69PfVy/5wDlNfH8fn1/kcF150RZ1at2jIcYpoLWYHPQGMTT8fAY4C9m/tYEnDJI2VNLapaWYNmte19ejenQ03XJ9LLx3BJpvuyMyZszjmFwfXu1lWY9/4+ld56613ePKpZ/5r308OOJL+q2/ExOdfYs/vfqsOrVt0uCdQBaU7h9PPgRExJCIebOP44RExOCIGd+u2dLWb1+VNmTqNKVOm8fiYpwC45ZY72HDQ+nVuldXallsO5pu7DGHSi49y3bUXs912W3H1VRfM39/U1MRNN93G7rt9o46ttEZUk6WkJX1R0p6S9i1ttah3UTB9+ttMmfIGa6+9FgDbb/9lJk58sc6tslo74ZdnMGDNwXxu7c3Z5wc/4957H2Lojw5lrbUGzD/mm7sM4YUXJtWvkYuAHIeDajFF9CSKRPC6wJ3AzsCDwIhq172oOOyIXzHi6t+z+OKL8corr7H/T46sd5OsC5DElZefx7K9lkES48c/x0EHH1fvZjW0pgwT66r2bAJJzwAbAE9FxAaSVgaujYivtXduj8X75fc3YmYLZe7sqar0Gj9YffeKPnOunXxLxW2otVoMB/07IpqAuZJ6AW8B/WtQr5mZtaMWN4uNldQb+APFDKGPKWYJmZl1KV42opNJEvCbiPgA+F9JdwO9ImJ8Nes1M1sYjTrNsxJVDQIREZLuBNZP71+tZn1mZpVo1Bk+lahFTuBJSZvUoB4zs4o0ERVtjagWOYHNgB9IehWYSfGc4YiIL9WgbjMza0PVgoCk1SLiNWDHatVhZtaZnBPoXH8BNoqIyZJujojvVLEuM7OK5ZgTqGYQKL9pYs0q1mNm1ilyXIq7mkEgWnltZtYlNWpytxLVDAIbSPqQokewZHoN/0kM96pi3WZm1gFVCwIR0b1a1zYzqwbnBMzMMubZQWZmGcsxJ1CTh8qYmVnX5J6AmVmS4xRR9wTMzJJaPF5S0quSnpE0TtLYVLa8pFGSXko/+6RySbpA0iRJ4yVtVHadoen4lyQNXdjf2UHAzCyJCv9bANtFxKCIGJzeHwuMjoiBwOj0HorH8Q5M2zDgEiiCBnASxdpsmwInlQLHgnIQMDNL6riK6K7A1en11cC3y8pHROFRoLekVSjWZBsVEe9FxPvAKGCnhanYQcDMrLYC+JukJyQNS2UrR8S09PpNYOX0uh/wetm5U1JZa+ULzIlhM7Ok0sRw+lAfVlY0PCKGNzvsyxExVdJKwChJzzdrQ0iqWYbaQcDMLKn0PoH0gd/8Q7/5MVPTz7ck3Uoxpj9d0ioRMS0N97yVDp8K9C87fdVUNhXYtln5fQvTZg8HmZkl1U4MS1pa0rKl18AQ4FlgJFCa4TMUuC29Hgnsm2YJbQ7MSMNG9wBDJPVJCeEhqWyBuSdgZpY0Vf8+gZWBWyVB8fn7x4i4W9IY4CZJ+wOTgT3T8XcCXwcmAbOA/QAi4j1JpwFj0nGnRsR7C9MgdeWbI3os3q/rNs7MupS5s6eq/aPatk2/HSr6zHlg6uiK21Br7gmYmSU5fut0EDAzS3JcQM5BwMwsyTEIeHaQmVnG3BMwM0u68kSZanEQMDNLchwOchAwM0v8eEkzs4zlOBzkxLCZWcbcEzAzS5wTMDPLWI7DQQ4CZmaJewJmZhnLcXaQE8NmZhlzT8DMLKnB8wS6HAcBM7Mkx+EgBwEzsyTHnoBzAmZmGXNPwMws8XCQmVnGchwOchAwM0vcEzAzy1iOPQEnhs3MMuaegJlZ4uEgM7OMRTTVuwk15yBgZpbkuIqocwJmZhlzT8DMLPFDZczMMpbjcJCDgJlZ4p6AmVnGfLOYmZllxT0BM7PEN4uZmWXMOQEzs4x5dpCZWcZy7Ak4MWxmljH3BMzMkhyniDoImJklOQ4HOQiYmSU5JoadEzAzy5h7AmZmiYeDzMwy5sSwmVnGvGyEmVnGcuwJODFsZpYx9wTMzBInhs3MMuacgJlZxtwTMDPLWI5BwIlhM7OMuSdgZpbk1w8A5dj9aUSShkXE8Hq3w7oW/7uwSnk4qHEMq3cDrEvyvwuriIOAmVnGHATMzDLmINA4PO5rLfG/C6uIE8NmZhlzT8DMLGMOAmZdhKR5ksaVbQOqUMerkvp29nWtcflmsU4gKYBzIuKo9P5oYJmIOLmTrj8AmAi8UFa8aUTM7ozrl9XzcUQs05nXtAXy74gY1NIOSaIYvm2qbZNsUeeeQOf4BNi9yt+w/hURg8q2+QFAkoP5IkjSAEkvSBoBPAv0l3SJpLGSJkg6pezY+d/wJQ2WdF96vYKkv6XjLwNUj9/Fui4Hgc4xl2KWxhHNd6T/kf8habyk0ZJWS+VXSbpA0sOSXpa0x4JUKGlbSf+UNBJ4LpX9RdIT6X/4YWXHflz2eg9JV6XXa0h6RNIzkk5fmF/cOtWSZUNBt6aygcDFEbFeREwGToiIwcCXgK9I+lI71zwJeDAi1gNuBVarWuutITkIdJ6LgH0kLdes/PfA1RHxJeA64IKyfasAXwZ2Ac5o5/prlX1AXJTKNgIOi4i10/sfR8TGwGDgUEkrtHPN84FLImJ9YFo7x1r1/busp7dbKpscEY+WHbOnpCeBp4D1gHXbueY2wLUAEXEH8H5nN9oam4NAJ4mID4ERwKHNdm0B/DG9vobiQ7/kLxHRFBHPASu3U0X5cNBBqezxiHil7JhDJT0NPAr0p/gW2ZatgOvL2mZdz8zSC0lrAEcDO6QvFXcAPdPuufzn/+eemHWQg0DnOg/YH1i6g8d/UvZ6YcZqyz8gtgW+CmwRERtQfFMsfRiU3wzS/APCN4o0jl4Uf+czJK0M7Fy271Vg4/T6O2XlDwDfB5C0M9Cn+s20RuIg0Iki4j3gJopAUPIwsHd6vQ/wzypVvxzwfkTMkvR5YPOyfdMlfUFSN2C3svKHmrXNurCIeJoiuD9P0bt8qGz3KcD5ksYC85qVbyNpArA78FqNmmsNwrNKOt/ZwMFl7w8BrpT0c+BtYL8q1Xs38FNJpamk5ePIxwK3p/rHAqVpoIcBf5R0DHBbldplHdR8em5EvAp8sVnZj1o595/A2i2UvwsM6bRG2iLHy0aYmWXMw0FmZhnzcFAXIml9/nuWzicRsVk92mNmiz4PB5mZZczDQWZmGXMQMDPLmIOAmVnGHASsVZL6S3pF0vLpfZ/0foCkgZJul/SvtGjdvZK2Scf9SNLbaZ2jCZL+LGmpNuo5WdLUdPyzkr5VQZsHSHo2vR4s6YJ2jj++2fuHF7Zus0bkIGCtiojXgUv4z+J2Z1Cslvomxbo1wyNirbRo3SHAmmWn35jWOVoPmA3s1U5156a19L8LXJHubp5vYZbLjoixEdF8LafmPhUEImLLBa3HrJE5CFh7zgU2l3Q4xeJ3Z1EsMfFIRIwsHRQRz0bEVc1PTh/eS9PB1SsjYiLFYmh9Jd0n6by0FMJhkjaWdH/qedwjaZVUx8aSnk6L55UW1ystt317er2MpCvTstnjJX1H0hn8Z/nm69JxH6efknRm6pk8I2mvsmvel3o3z0u6TpLX6LeG5fsErE0RMScteXE3MCS9Xw94sp1T95L0ZYrlsl8E/tqR+iRtBjRRLHEBsHhEDJa0GHA/sGtEvJ0+lH8N/Bi4Ejg4Ih6QdGYrl/4VMCMtm42kPhFxs6SDW3ma1+7AIGADoC8wRtIDad+GFMs4v0Gxfs9WwIMd+f3Muhr3BKwjdqZ43sAXW9op6db0jfmWsuIb04frZ4BngJ+3U8cRksZR9DT2iv/cwHJj+rlOqn9UOu6XwKqSegO9I6L0Ad3akthfpXjmAwAR0V7P5MvA9RExLyKmUwSgTdK+xyNiSnrU4zhgQDvXMuuyHASsTZIGAV+jWJX0iDQEM4HigTYApAeg/AhYvvn56cP8rxQPN2nLuSmHsHVaDK2ktFy2gAllz1RYPyLqtTBa+RLg83CP2hqYg4C1Ko11XwIcHhGvAWdSfFP/I7BVs1k8rc7+ofhW/a8Km/MCsKKkLVLbFpO0XkR8AHyQhp6g9SWxR/HpfEFpXf05aaipuX9SDGl1l7QiRRB7vMLfwazLcRCwthwAvBYRo9L7i4EvAJtSPBLzpyqej/wIxfBM+XOK90oJ1/EUY+inVdKQiJgN7AH8NiWAxwGlmTz7ARelYaLWkrSnA33SsNXTwHapfDgwvpQYLnMrMB54GvgH8IuIeLOS38GsK/LaQWZmGXNPwMwsY05oWc1IOoHiZrByf4qIX9ejPWbm4SAzs6x5OMjMLGMOAmZmGXMQMDPLmIOAmVnGHATMzDL2/wHk5K9s+iBUkAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "LABELS = ['Non_Fraud', 'Fraud']\n", + "plt.figure(figsize = (6,6))\n", + "sns.heatmap(conf_matrix_xgb, xticklabels=LABELS, yticklabels=LABELS, annot=True, fmt=\"d\")\n", + "plt.title('Confusion Matrix')\n", + "plt.xlabel('XGB_Prediction')\n", + "plt.ylabel('Actual')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fea3c39f", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import roc_curve, auc, precision_recall_curve, average_precision_score, roc_auc_score\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Get probability scores for class 1 (Fraud)\n", + "y_scores_xgb = model1.predict_proba(X_test_xgb)[:, 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ded525fd", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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nFzRdKdOnaKoqOis5woKCjh+/DhDhgyhWbNmFBQU0K1bN/bv38+2bdv4/PPPadiwIY0aNeKVV15hyZIlDBgwAAivYX/44YdfWtP84osvzswb4A9/+APf+MY3KCgoYPr06Tz11FP06NGDoqIiSkpKzspz6tQpiouLKSwsJBQKRbX5/Mc//vF5nzv39SdPnjxrDMobE4Df//733H///Zw4cYLRo0djZmfG6t1332XhwoUUFxczZswY+vbtS7NmzZg3bx4ffvghmZmZ3HLLLfzud79j1qxZZ+bp7hw7duzMlgUIbw3ZtWtXuT9ncXHxl97DwJmtJ7XBL37RnQUL2gaw5P4BLLO20Rheqg4dPmH69Jd49dUpZGXlVssy4+JkL+7+GPAYQFZWlp97dZjNmzdf8olGquokJWlpaXzwwQccP36ca6+9lqeffpr777+fgQMH8uabb561jJ07d9KgQQPatm1Lv3792LJlC1dccUWF869ourS0NOrVq0dGRgahUIiTJ0+SkZFBeno6DRs2PGvZN954I4sXL2b//v3cfPPNZGRkkJKSwj/90z/xd3/3dxVmqFOnDvXr1ycpKYkvvviCN998k82bN2NmlJSUkJSUxK9+9Svat2//pXEtKCigffv2DBgwgPz8fNz9gmvjF7Mm3rlzZz7//PMzy/z000/p1q3bl363Y8eOZezYsQAsXbqUTz75hIyMDLp06ULr1q1p1aoVAKNGjWLHjh3s2LGDbt26nTk5y8yZM1m1ahV33XXXmXmaGQ0aNDhrWUlJSWRkZJT73kpNTS13U3xtunrU//4vtGoFL79cvcuNZmuQVExjeOm++AI2bkzh/vv/wqhRo6tnoe4esy+gE5B3nuceBW4qc38r0PpC8xwyZIifa9OmTV96LFpHjx695NeWVb9+/TO3N2zY4B06dPBTp0758ePHvXPnzr5s2TJ3dz9+/LhPmjTJH3roIXd3f//9971r166+detWd3cvLS313/72t1+af0XT/eQnP/F/+Id/cHf3l156ycO/VvfXX3/dJ02adNZ88vLyfMSIEd69e3ffu3evu7svWbLEhw0b5gUFBe7unp+f759++umXMgwfPtw/+ugjd3d/9NFH/e677z7z3NGjR/2qq67yN954w4uLi71Tp05nfi9/+ctfvEOHDn748GF3d//+97/vs2fP9hMnTri7+2ef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Jo5I7eDuvPfeezRq1IjOnTszatQoHbgmIlWuwhKPnOQlw92/V015ROJecXExr776Knl5efTr14/OnTurwEUkJs5b4mZWJ3Jw2sjqDCQSz/Lz88nJyeHIkSOMHj2akSP15yMisVPRmvgawvu/3zOzBcCLQOHpJ919XoyzicSVvXv38r//+79kZGRw22230b59+wu/SESkEqLZJ54KHARG89fPizugEhchfPKWpKQkWrduzejRoxkyZAipqalBxxKRBFBRibeIHJmex1/L+zSPaSqROLFjxw5ee+01vva1r9GoUSNtPheRalVRiScDDTi7vE9TiUtCKy0tZeXKlbz99ts0b978zHXARUSqU0Ulvs/df1xtSUTixKFDh8jJyWHPnj0MGTKEa6+9lpSUlKBjiUgCqqjE9ZkYkXK89dZbHDx4kBtuuIHevXsHHUdEElhFJT6m2lKI1HAnT57k+PHjNGrUiPHjx3PllVfSqFGjoGOJSII7b4m7+xfVGUSkptq/fz9z586lTp063H333dStW5e6desGHUtE5OIvgCKSKNydNWvWsGzZMtLT05k0aRJJSUlBxxIROUMlLlKO4uJiXn75ZbZu3UqPHj2YOnUq6enpQccSETmLSlykHCkpKRw/fpxrr72W4cOH69znIlIjqcRFIkKhEKtWrWLQoEGkpaUxe/ZsbT4XkRpNJS4CHDlyhHnz5rFr1y5SUlIYOnSoClxEajyVuCS8LVu2MH/+fEKhENOmTaN///5BRxIRiUpCl7jr5LEJb+3atSxatIjWrVuTnZ1N06ZNg44kIhK1hC7x03TMUuJxd8yMXr16UVBQwNVXX01ycnLQsURELop2+klCcXc2bNjA888/TygUIiMjg9GjR6vARSQuaU1cEkZxcTGvvPIKGzdupHPnzpw8eVLX/RaRuKYSl4SQn59PTk4OR44cYfTo0YwcOVJHn4tI3FOJS60XCoV46aWXcHduu+022rdvH3QkEZEqoRKXWuvYsWOkpqZSp04dbrzxRho2bKjN5yJSq2h7otRK27dv55FHHmHlypUAtGjRQgUuIrWO1sSlViktLWXFihW88847tGjRgkGDBgUdSUQkZlTiUmscOnSIuXPnsnfvXrKyshg/fjwpKSlBxxIRiRmVuNQap06doqCggJkzZ3LZZZcFHUdEJOa0T1zi2smTJ9mwYQMQ3u99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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# ROC Curve\n", + "fpr, tpr, thresholds = roc_curve(y_test_xgb, y_scores_xgb)\n", + "roc_auc = auc(fpr, tpr)\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "plt.plot(fpr, tpr, label=f'ROC Curve (AUC = {roc_auc:.4f})', color='blue')\n", + "plt.plot([0, 1], [0, 1], linestyle='--', color='gray') # random model line\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('ROC Curve')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a4193624", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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6f/9tqqUZ6cfBMxNKb0CEBF3AccDLzQYczxwSf7+fcAvIiJSSml7n/QbD32DmQtmFjx+/fr1lJWVbXHM8A8M59rR1xa8zk984hPMmjWL6upqvve979GnTx9efPFF5syZw4UXXkh1dTWrV6/m3HPP5atf/SoAP/nJT/jVr35Fp06dOOaYY/jxj3/MGWecwac//WlOPvlkLrzwQiZPnkznzp056qijuOqqq7jkkkvo2bMnF1xwATNnzmTcuHGsWLGC3XffnUmTJtGnTx+qqqoYOXIkjz32GIsXL+amm27iE5/4xBbrP+SQQ5g/f359fwqpedSoUVxzzTXceOONTJw4kTVr1rDHHntw++2306NHj4L69utf/5rRo0dvNO/OO+/k6quv5vTTT6empoaBAwdu8rjDDjuM6667rqDn2Jzf/va3nHrqqXTt2pXBgwezxx578NRTT3HIIYdsNC4iWLp0KQBLlixhwIABQO6PgGuuuQaAT37yk5xwwgkAfOQjH6l/7IABA9h5551ZuHAhO+64I2PGjKlfdtBBB/Hmm2/WP0dVVRUPPvggp5xySlHbJXUkRww+giMGH7HZ5bc9dxuPvPIIJ9x9wlbXddAuBwG5d4UAJFLB0xtWbmBW1azt24htVMoQ3wV4o8F0DTByc2NSSusiYgnQF3i3hHWV1Lp16/jDH/5QH0Z//etfef755xk8eDATJ06kd+/ePP3006xevZqPf/zjHHXUUbz44ov89re/5cknn6RHjx689957G61z0aJF/OY3v+HFF18kIur35BoaO3YsP//5zzn88MMZP348l156Kddee219TU899RRTpkzh0ksv3eIheoCHHnqoPoRuuummgmqeN28eAP/8z//MWWedBcDFF1/MTTfdxPnnn19Q7/785z9z8skn10+/8cYbvPXWWxx00EGccsop3H333XzrW9/a5HEPPvgg++233ybzv/nNb/LYY49tMv/UU0/lwgs3fnVn/vz5HHzwwfXTAwcOrP9DpqFf/vKXjBkzhu7du9OrVy+eeOIJAPbff3/uv/9+vv71r/Ob3/yG2tpaFi1aRN++fesf+9RTT7FmzRp23333jda5du1abr/9dq644or6eZWVlUyfPt0Ql5rRqUNPZUDFANauX0tEEMRGX9dvWM8Ppv+AHcp3AP5xImkQ2zS9PC1vsW3KxPvEI+Js4GyA/v37U11dvdHy3r17U1tbC8DlH798m9ZdyJ44UL/+zVm5ciXDhg0Dcnuyp5xyCk8++SQHHngg/fr1o7a2lilTpvD8889zzz33ALB06VKee+45pk2bxmmnncb69eupra2lvLyc2tpa1q5dy8qVK+nUqRNdunRh7NixjB49mtGjR1NbW8vq1aspLy+npqaG999/nxEjRlBbW8tJJ53EF7/4RWpra1m/fn39+L322otXXnmlyW1Zu3YtF1xwARdeeCFvvvkmjzzyyDbVXPc9eOqpp7j88stZsmQJy5cvZ9SoURvV2nC7Gtfxxhtv0KNHj/r5t912GyeccAK1tbV85jOf4dxzz+Xss88Gcn/tHn744ZSVlbHvvvvyne98Z5P1XXbZZQV/P9esWbNRTZur8corr+Tee+/lox/9KP/xH//B+eefzy9+8QsuueQSLrjgAiZNmsTHPvYxBgwYwIoVK+jSpQsACxYs4POf/zzXX389y5dv/B/8/PPP5+CDD2bkyJH1z9ezZ09ef/31Jr9Xq1at2uT/gHKWLVtmb4rU3nvYOf9vc8suH7xtGdKUZT1broelDPH5wK4Npgfm5zU1piYiOgO9gUWNV5RSmghMBKisrExVVVUbLZ8zZ852X2ikuS5S0r17d2bN2vjwSY8ePejVq1f9+svKypgwYQJHH330RuOmT59Ot27dNqmjvLyc7t2706dPH5555hmmTZvGfffdx0033cSjjz5K165d6dq1KxUVFURE/eN79uxJp06dqKiooKysjD59+lBRUcHq1avZsGEDFRUVnHnmmcyYMYMBAwYwZcoUysvLueqqqzj55JP5+c9/zvnnn8+zzz5bcM11ffza177GAw88wP77788tt9xCdXU1FRUVG9Vat12Nt7eu3rr5999/PwsWLODee+8F4M0332TBggXsueeeRAR//OMf6dev32a/J9uyJz548GDefffd+ud+++232WOPPTaqceHChcyePZsjjsgdrqv7o6qiooKKigomT54M5H4J/u53v2PXXXM//kuXLuVzn/scV1xxBaNGjdroeS+99FIWL17MpEmTWL58ef3z1X3/mvrZ7NatGwcccMBmt7sjq66upvHvB20be1i8luxhKc9OfxrYMyIGR0QX4FRgcqMxk4Ev5u+fDDxazOvhbd3RRx/Nf/3Xf9WfhfzSSy+xfPlyPvWpT3HzzTfXn8jU+HD6smXLWLJkCWPGjOFnP/sZzz333EbLe/fuTZ8+fZg+fToAt99+O4cffvgWa7n55puZOXMmU6ZM2WTZeeedx4YNG5g6deo211xbW8sHP/hB1q5dyx133LFN/dlnn33qz/Z+6aWXWLZsGfPnz+e1117jtdde46KLLmryBLfN+dnPfsbMmTM3uTUOcIDjjjuOu+66i9WrV/Pqq6/y8ssvc9BBB200pk+fPixZsoSXXnoJgIcffph99tkHyJ1Fv2HDBiB3lvuXvvQlILeHf+KJJzJ27NiNXiqA3KH5qVOncuedd9Kp08b/FV966SWGDh1a8LZK6phKtieef437PGAqUAZMSinNjojLgGdSSpOBm4DbI2Iu8B65oG+3vvKVr/Daa68xYsQIUkrstNNOPPDAA4wePZqZM2dSWVlJly5dGDNmzEZnW9fW1nL88cezatUqUkr1J1A1dOutt9af2PbhD3+Ym2++ebvrjAguvvhifvrTn/Lwww8XVPORRx7JVVddxeWXX87IkSPZaaedNjo8XIhjjz2WG264ga985SvceeednHjiiRstP+mkk/jc5z5Xkrdf7bvvvpxyyikMGTKEzp07M2HChPqXWcaMGcMvf/lLBgwYwI033shJJ51Ep06d6NOnD5MmTQJyf3lfdNFFRASHHXYYEyZMAOCee+7h8ccfZ9GiRdxyyy0A3HLLLQwfPpxx48ax22671Z88d+yxx/LDH/4QyJ153/A1cklqSmRtx7eysjI988wzG82bM2dO/R7RtvKa382jufp46KGH8uCDD7LjjjsWX1TG1PXw7bff5vTTT9/se/WL+Xlv7zwUXDx7WLzm7mFEPJtSqmxqmVdsU5ty9dVX8/rrr7d2Ga3q9ddf5+qrr27tMiRlQCbOTlfHMXJk43chdjwf/ehHW7sESRnRbvbEs/aygLQ9/DmX1FC7CPFu3bqxaNEif8GpXav7PPFu3bq1dimS2oh2cTh94MCB1NTUsHDhwm1+7KpVq/yl2AzsY/EK6WG3bt2avPSspI6pXYR4eXk5gwcP3q7HVldXe+GMZmAfi2cPJW2rdnE4XZKkjsgQlyQpowxxSZIyKnNXbIuIhcC8ZlxlPzL80adtiH0snj0snj0snj0sXnP3cLeU0k5NLchciDe3iHhmc5ezU+HsY/HsYfHsYfHsYfFasoceTpckKaMMcUmSMsoQh4mtXUA7YR+LZw+LZw+LZw+L12I97PCviUuSlFXuiUuSlFEdJsQjYnRE/D0i5kbEhU0s7xoRd+eXPxkRg1qhzDatgB7+W0S8EBGzImJaROzWGnW2ZVvrYYNxJ0VEigjPEm5CIX2MiFPyP4+zI+K/W7rGtq6A/88fiojHImJG/v/0mNaos62KiEkR8U5EPL+Z5RER1+X7OysiRpSkkJRSu78BZcD/AR8GugDPAUMajfkacH3+/qnA3a1dd1u6FdjDTwI98vfPsYfb3sP8uArgceAJoLK1625rtwJ/FvcEZgB98tM7t3bdbelWYA8nAufk7w8BXmvtutvSDTgMGAE8v5nlY4A/AAEcDDxZijo6yp74QcDclNIrKaU1wF3A8Y3GHA/cmr9/HzAqIqIFa2zrttrDlNJjKaUV+cknAD9ua2OF/BwCXA78BFjVksVlSCF9PAuYkFJ6HyCl9E4L19jWFdLDBPTK3+8NvNmC9bV5KaXHgfe2MOR44LaU8wSwY0R8sLnr6CghvgvwRoPpmvy8JseklNYBS4C+LVJdNhTSw4a+TO6vUP3DVnuYP+S2a0rp9y1ZWMYU8rP4EeAjEfHniHgiIka3WHXZUEgPLwG+EBE1wBTg/JYprd3Y1t+Z26VdfBSp2paI+AJQCRze2rVkSUR0Aq4BzmjlUtqDzuQOqVeROyL0eETsl1Ja3JpFZcxpwC0ppasj4hDg9ogYmlLa0NqF6R86yp74fGDXBtMD8/OaHBMRnckdPlrUItVlQyE9JCKOBP4fcFxKaXUL1ZYVW+thBTAUqI6I18i9jjbZk9s2UcjPYg0wOaW0NqX0KvASuVBXTiE9/DJwD0BK6S9AN3LXBFdhCvqdWayOEuJPA3tGxOCI6ELuxLXJjcZMBr6Yv38y8GjKn50goIAeRsQBwA3kAtzXIDe1xR6mlJaklPqllAallAaRO6/guJTSM61TbptVyP/nB8jthRMR/cgdXn+lBWts6wrp4evAKICI2IdciC9s0SqzbTIwNn+W+sHAkpTSW839JB3icHpKaV1EnAdMJXdW5qSU0uyIuAx4JqU0GbiJ3OGiueROVji19Spuewrs4ZVAT+De/DmBr6eUjmu1otuYAnuorSiwj1OBoyLiBWA98O2UkkfW8grs4beAGyPim+ROcjvDHZt/iIg7yf2h2C9/3sD3gXKAlNL15M4jGAPMBVYAZ5akDr8nkiRlU0c5nC5JUrtjiEuSlFGGuCRJGWWIS5KUUYa4JEkZZYhLHUxErI+ImRHxfET8LiJ2bOb1v5Z/bzYRsaw51y1pY4a41PGsTCkNTykNJXdNhHNbuyBJ28cQlzq2v5D/UIaI2D0iHoqIZyNiekTsnZ/fPyJ+ExHP5W8fy89/ID92dkSc3YrbIHVYHeKKbZI2FRFl5C6reVN+1kRgXErp5YgYCfwncARwHfDHlNKJ+cf0zI//UkrpvYjoDjwdEb/2qmhSyzLEpY6ne0TMJLcHPgd4OCJ6Ah/jH5fMBeia/3oEMBYgpbSe3Mf0AvxrRJyYv78ruQ8YMcSlFmSISx3PypTS8IjoQe7a2ecCtwCLU0rDC1lBRFQBRwKHpJRWREQ1uQ/IkNSCfE1c6qBSSiuAfyX3QRcrgFcj4rMA+U9e2j8/dBpwTn5+WUT0JvdRve/nA3xvch+bKqmFGeJSB5ZSmgHMAk4DPg98OSKeA2YDx+eHfR34ZET8DXgWGAI8BHSOiDnAj8l9bKqkFuanmEmSlFHuiUuSlFGGuCRJGWWIS5KUUYa4JEkZZYhLkpRRhrgkSRlliEuSlFGGuCRJGfX/AeuJM2QelownAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Precision-Recall Curve\n", + "precision, recall, pr_thresholds = precision_recall_curve(y_test_xgb, y_scores_xgb)\n", + "average_precision = average_precision_score(y_test_xgb, y_scores_xgb)\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "plt.plot(recall, precision, label=f'Precision-Recall (AP = {average_precision:.4f})', color='green')\n", + "plt.xlabel('Recall')\n", + "plt.ylabel('Precision')\n", + "plt.title('Precision-Recall Curve')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a5a6c3c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}