Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
21 views17 pages

Sampling Ipynb

The document contains Python code for analyzing a credit card dataset using libraries like pandas, numpy, and sklearn. It includes data loading, exploration, and checking for class distribution and missing values. The dataset consists of 772 entries with 31 columns, where the majority class is 0 (non-fraud) and the minority class is 1 (fraud).

Uploaded by

Teena Sapra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views17 pages

Sampling Ipynb

The document contains Python code for analyzing a credit card dataset using libraries like pandas, numpy, and sklearn. It includes data loading, exploration, and checking for class distribution and missing values. The dataset consists of 772 entries with 31 columns, where the majority class is 0 (non-fraud) and the minority class is 1 (fraud).

Uploaded by

Teena Sapra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 17

{

"cells": [
{
"cell_type": "code",
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from imblearn.over_sampling import SMOTE\n",
"from collections import Counter\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.ensemble import GradientBoostingClassifier\n",
"from sklearn.svm import SVC\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.metrics import accuracy_score"
],
"metadata": {
"id": "mQa9l7ZZpQO2"
},
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"source": [
"data = pd.read_csv('Creditcard_data.csv')"
],
"metadata": {
"id": "pJOL3ewnpQMp"
},
"execution_count": 4,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(data.head())\n",
"data.info()\n",
"print(data.describe())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "DTwtYFFZpQKX",
"outputId": "040a7327-3119-43f0-fae1-eac78d47f93e"
},
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Time V1 V2 V3 V4 V5 V6
V7 \\\n",
"0 0 -1.359807 -0.072781 2.536347 1.378155 -0.338321 0.462388
0.239599 \n",
"1 0 1.191857 0.266151 0.166480 0.448154 0.060018 -0.082361 -
0.078803 \n",
"2 1 -1.358354 -1.340163 1.773209 0.379780 -0.503198 1.800499
0.791461 \n",
"3 1 -0.966272 -0.185226 1.792993 -0.863291 -0.010309 1.247203
0.237609 \n",
"4 2 -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 1 \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",
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 772 entries, 0 to 771\n",
"Data columns (total 31 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Time 772 non-null int64 \n",
" 1 V1 772 non-null float64\n",
" 2 V2 772 non-null float64\n",
" 3 V3 772 non-null float64\n",
" 4 V4 772 non-null float64\n",
" 5 V5 772 non-null float64\n",
" 6 V6 772 non-null float64\n",
" 7 V7 772 non-null float64\n",
" 8 V8 772 non-null float64\n",
" 9 V9 772 non-null float64\n",
" 10 V10 772 non-null float64\n",
" 11 V11 772 non-null float64\n",
" 12 V12 772 non-null float64\n",
" 13 V13 772 non-null float64\n",
" 14 V14 772 non-null float64\n",
" 15 V15 772 non-null float64\n",
" 16 V16 772 non-null float64\n",
" 17 V17 772 non-null float64\n",
" 18 V18 772 non-null float64\n",
" 19 V19 772 non-null float64\n",
" 20 V20 772 non-null float64\n",
" 21 V21 772 non-null float64\n",
" 22 V22 772 non-null float64\n",
" 23 V23 772 non-null float64\n",
" 24 V24 772 non-null float64\n",
" 25 V25 772 non-null float64\n",
" 26 V26 772 non-null float64\n",
" 27 V27 772 non-null float64\n",
" 28 V28 772 non-null float64\n",
" 29 Amount 772 non-null float64\n",
" 30 Class 772 non-null int64 \n",
"dtypes: float64(29), int64(2)\n",
"memory usage: 187.1 KB\n",
" Time V1 V2 V3 V4
V5 \\\n",
"count 772.000000 772.000000 772.000000 772.000000 772.000000
772.000000 \n",
"mean 283.005181 -0.176963 0.217169 0.875172 0.285628 -
0.005029 \n",
"std 171.834196 1.294724 1.173401 1.031878 1.258758
1.098143 \n",
"min 0.000000 -6.093248 -12.114213 -5.694973 -4.657545 -
6.631951 \n",
"25% 126.500000 -0.896416 -0.174684 0.308677 -0.460058 -
0.534567 \n",
"50% 282.000000 -0.382618 0.285843 0.905435 0.395919 -
0.116612 \n",
"75% 432.000000 1.110739 0.885745 1.532969 1.117559
0.452818 \n",
"max 581.000000 1.586093 5.267376 3.772857 4.075817
7.672544 \n",
"\n",
" V6 V7 V8 V9 ... V21
\\\n",
"count 772.000000 772.000000 772.000000 772.000000 ... 772.000000
\n",
"mean 0.159081 0.123329 -0.057547 -0.030384 ... 0.004888
\n",
"std 1.225682 0.852075 0.830144 0.878183 ... 0.609335
\n",
"min -3.498447 -4.925568 -7.494658 -2.770089 ... -4.134608
\n",
"25% -0.630717 -0.296289 -0.167880 -0.517068 ... -0.213746
\n",
"50% -0.109581 0.116329 0.034755 -0.082270 ... -0.075802
\n",
"75% 0.482972 0.575390 0.252395 0.412261 ... 0.095149
\n",
"max 5.122103 4.808426 2.134599 5.459274 ... 5.273420
\n",
"\n",
" V22 V23 V24 V25 V26
V27 \\\n",
"count 772.000000 772.000000 772.000000 772.000000 772.000000
772.000000 \n",
"mean -0.096995 -0.040344 -0.002501 0.114337 0.022782
0.023353 \n",
"std 0.607228 0.358724 0.621507 0.429667 0.484227
0.300934 \n",
"min -2.776923 -3.553381 -1.867208 -1.389079 -1.243924 -
2.377933 \n",
"25% -0.525289 -0.176915 -0.379766 -0.166227 -0.313631 -
0.047868 \n",
"50% -0.076551 -0.048353 0.091886 0.143723 -0.026414
0.023199 \n",
"75% 0.307438 0.070085 0.426339 0.425798 0.260408
0.112199 \n",
"max 1.574750 3.150413 1.215279 1.136720 3.087444
2.490503 \n",
"\n",
" V28 Amount Class \n",
"count 772.000000 772.000000 772.000000 \n",
"mean -0.017045 68.668290 0.011658 \n",
"std 0.278332 197.838269 0.107411 \n",
"min -2.735623 0.000000 0.000000 \n",
"25% -0.033083 5.987500 0.000000 \n",
"50% 0.021034 16.665000 0.000000 \n",
"75% 0.087023 55.527500 0.000000 \n",
"max 1.575380 3828.040000 1.000000 \n",
"\n",
"[8 rows x 31 columns]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"class_counts = data[\"Class\"].value_counts()\n",
"print(f\"Class Distribution:\\n{class_counts}\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "6tlq3sIepQIE",
"outputId": "bea04533-be21-4980-f9cb-65f1ba37e7cf"
},
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Class Distribution:\n",
"Class\n",
"0 763\n",
"1 9\n",
"Name: count, dtype: int64\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"missing_values = data.isnull().sum()\n",
"print(\"Missing Values in Each Column:\")\n",
"print(missing_values)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Jkq7_MeqpQDT",
"outputId": "9771b604-5f7e-4040-f638-2cc30c5bd6f6"
},
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Missing Values in Each Column:\n",
"Time 0\n",
"V1 0\n",
"V2 0\n",
"V3 0\n",
"V4 0\n",
"V5 0\n",
"V6 0\n",
"V7 0\n",
"V8 0\n",
"V9 0\n",
"V10 0\n",
"V11 0\n",
"V12 0\n",
"V13 0\n",
"V14 0\n",
"V15 0\n",
"V16 0\n",
"V17 0\n",
"V18 0\n",
"V19 0\n",
"V20 0\n",
"V21 0\n",
"V22 0\n",
"V23 0\n",
"V24 0\n",
"V25 0\n",
"V26 0\n",
"V27 0\n",
"V28 0\n",
"Amount 0\n",
"Class 0\n",
"dtype: int64\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"data = data.replace('shivane kapoor', 'shivane kapoor')"
],
"metadata": {
"id": "VpC207MmpP4T"
},
"execution_count": 8,
"outputs": []
},
{
"cell_type": "code",
"source": [
"data_0 = data[data['Class'] == 0]\n",
"data_1 = data[data['Class'] == 1]\n",
"print(f\"Class 0: {data_0.shape}\")\n",
"print(f\"Class 1: {data_1.shape}\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kmLDLsmTpPmM",
"outputId": "63e2b56d-05ea-4ef6-b055-9a75fa729127"
},
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Class 0: (763, 31)\n",
"Class 1: (9, 31)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"data['Class'].value_counts().plot(kind='bar', color='skyblue',
title=\"Target Variable Distribution\")\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 467
},
"id": "DoJyjZAvvS_-",
"outputId": "7c737fbf-50a3-40bb-8cc9-11d0cf0261ce"
},
"execution_count": 10,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAigAAAHCCAYAAADFOjL8AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+na
QAANmRJREFUeJzt3XtcVHX+x/E3FwFFZ/
AGI+YFTVO8rIabTraVSaKRZpKlyxaWaRnYKmnKb713sbVN+7mlbG1pm7q2bmupu2mIpvtLvERarqZZmmg6o
BkziQkI5/dHD842guUgygFfz8fjPB7O9/s953zOIZo35+pnGIYhAAAAC/
Gv7gIAAADOR0ABAACWQ0ABAACWQ0ABAACWQ0ABAACWQ0ABAACWQ0ABAACWQ0ABAACWQ0ABAACWQ0AB8LNmz
JghPz+/Ss3bunVr3XnnnT877oMPPpCfn58++OCDSq2nKlzJGirap35+fkpJSbns65akxYsXy8/
PT1999dUVWR/gKwIKah0/P7+Lmqrzi7AiW7Zs0YwZM5Sfn/+T44qLi9WkSRPddNNNFxxjGIZatGih66+/
voqrrDm++uorr593nTp11KRJE9144436n//
5H+Xk5FTZup599lm98847Vba8qmTl2oCf4se7eFDbLFmyxOvzX/7yF2VkZOjNN9/0ar/
99tsVERFxJUv7SX/4wx80ceJEHTp0SK1bt/7JsWPGjNGf/
vQnHTp0SK1atSrXv2nTJt1666164YUXlJqaesm1nTt3TufOnVNISIjP87Zu3VqdO3fWmjVrfnLcBx98oD59
+mjjxo269dZbK1npf3311VeKiorS8OHDdccdd6i0tFTffvutduzYoX/84x/y8/
PTa6+9pmHDhpnzlJaWqqioSEFBQfL3v/i/
3+rXr6977rlHixcvvuh5Ktqnfn5+Sk5O1ksvvXTRy6lsbSUlJSouLlZwcHClj44Bl1NgdRcAVLXf/
OY3Xp+3bt2qjIyMcu2VYRiGzp49q7p1617ysi5FYmKi0tPT9de//lWTJ08u179s2TL5+/
t7fflWRkFBgUJDQxUYGKjAwJr5v4vrr7++3M/+8OHD6tevn5KSktSxY0f94he/kCT5+/
tXKoT5wir7NCAgQAEBAdW2fuDncIoHV6VFixbptttuU3h4uIKDgxUdHa2FCxeWG1d2/
cS6devUo0cP1a1bV3/6058k/fAlN2jQIIWGhio8PFzjx4/
XunXrKjx9tG3bNvXv3192u1316tXTLbfcog8//
NDsnzFjhiZOnChJioqKMk9LXOj6gN69e6t169ZatmxZub7i4mL9/e9/V58+fRQZGalPP/
1UI0aMUJs2bRQSEiKHw6GHHnpI33zzjdd8ZddE7N27V7/+9a/VsGFD8zRSRddLXOw+LPP+++
+rW7duCgkJUXR0tP7xj39ccKwv+64yWrVqpcWLF6uoqEhz5swx2yu6BuXAgQNKSEiQw+FQSEiIrrnmGg0bN
kxut1vSD0c9CgoK9MYbb5g/txEjRkjyfZ+WWbp0qa677jqFhIQoJiZGmzdv9uofMWJEhUfZzl/
mT9V2oWtQFixYoE6dOik4OFiRkZFKTk4ud9rx1ltvVefOnbV371716dNH9erVU/
Pmzb32JXCpauafRMAlWrhwoTp16qRBgwYpMDBQq1ev1mOPPabS0lIlJyd7jd2/
f7+GDx+uRx55RKNGjdJ1112ngoIC3XbbbTp+/Lh+
+9vfyuFwaNmyZdq4cWO5dW3YsEEDBgxQTEyMpk+fLn9/f/PL/d///rduuOEGDRkyRJ9//rn++te/
at68eWrSpIkkqWnTphXW7+fnp1//+td69tlntWfPHnXq1MnsW7t2rU6dOqXExERJUkZGhg4ePKgHH3xQDod
De/bs0SuvvKI9e/Zo69at5b4khw4dqnbt2unZZ5/
VT50B9mUfHjhwQPfdd58effRRJSUladGiRRo6dKjWrl2r22+//
YLruJh9V1lOp1Nt27ZVRkbGBccUFRUpLi5OhYWFGjt2rBwOh77++mutWbNG+fn5stvtevPNN/Xwww/
rhhtu0OjRoyVJbdu29VrOxe5T6YfTc2+99ZYef/
xxBQcHa8GCBerfv7+2b9+uzp07+7SNF1Pbj82YMUMzZ85UbGysxowZo/3792vhwoXasWOHPvzwQ9WpU8cc+
+2336p///4aMmSI7r33Xv3973/XpEmT1KVLFw0YMMCnOoEKGUAtl5ycbJz/n/
qZM2fKjYuLizPatGnj1daqVStDkrF27Vqv9hdeeMGQZLzzzjtm2/
fff2906NDBkGRs3LjRMAzDKC0tNdq1a2fExcUZpaWlXuuPiooybr/
9drPt+eefNyQZhw4duqjt2rNnjyHJSEtL82ofNmyYERISYrjd7gtu61//+ldDkrF582azbfr06YYkY/
jw4eXGl/X9mK/78O233zbb3G630axZM6N79+5m28aNGyu97ypy6NAhQ5Lx/
PPPX3DMXXfdZUgy99X5NezcudOQZKxYseIn1xUaGmokJSWVa/
d1n0oyJBkfffSR2Xb48GEjJCTEuPvuu822pKQko1WrVhe1zAvVtmjRIq//
3vLy8oygoCCjX79+RklJiTnupZdeMiQZr7/+utl2yy23GJKMv/
zlL2ZbYWGh4XA4jISEhHLrAiqDUzy4Kv34GhK3262TJ0/
qlltu0cGDB81D92WioqIUFxfn1bZ27Vo1b95cgwYNMttCQkI0atQor3G7du3SgQMH9Otf/
1rffPONTp48qZMnT6qgoEB9+/
bV5s2bVVpaWqltiI6OVvfu3bV8+XKzraCgQKtWrdKdd94pm81WblvPnj2rkydPqlevXpKkjz/
+uNxyH3300Ytavy/
7MDIyUnfffbf52Waz6YEHHtDOnTvlcrkqXP7l3Hdl6tevL0n67rvvKuy32+2SpHXr1unMmTOVXs/
F7lPphyM7MTEx5ueWLVvqrrvu0rp161RSUlLpGn7O+vXrVVRUpHHjxnldIDxq1CjZbDb985//9Bpfv359r2
t7goKCdMMNN+jgwYOXrUZcXTjFg6vShx9+qOnTpysrK6vcF4/b7Ta/
mKQfAsr5Dh8+rLZt25Y7PXLttdd6fT5w4IAkKSkp6YK1uN1uNWzY0OdtkH64WHbChAnasmWLbrzxRr3zzjs
6c+aMeXpHkk6dOqWZM2dq+fLlysvLK7fu81W0vRXxZR9ee+215fZV+/btJf1wt43D4Si3/
Mu97yTp9OnTkqQGDRpU2B8VFaXU1FTNnTtXS5cu1a9+9SsNGjRIv/nNb7y27+dc7D6VpHbt2pVra9+
+vc6cOaMTJ05UuK+qwuHDhyVJ1113nVd7UFCQ2rRpY/aXueaaa8r9TBs2bKhPP/
30stSHqw8BBVedL7/8Un379lWHDh00d+5ctWjRQkFBQfrXv/6lefPmlfur/
FLu2Clb1vPPP69u3bpVOKbsr/jKGD58uJ588kktW7ZMN954o5YtW6aGDRvqjjvuMMfce+
+92rJliyZOnKhu3bqpfv36Ki0tVf/+/Ss8AnEx2+vrPqyMy73vJOk///
mPwsPDzaNNFXnhhRc0YsQIvfvuu3r//ff1+OOPa/bs2dq6dauuueaai1pPVd/1daGLay/
nEZbzXegOIIMnV6CKEFBw1Vm9erUKCwu1atUqtWzZ0myv6ALXC2nVqpX27t0rwzC8viy+
+OILr3FlFyTabDbFxsb+5DIr8yyKyMhI9enTRytWrNDUqVOVkZGhESNGKCgoSNIPFzJmZmZq5syZmjZtmjl
f2dGJyvJ1H37xxRfl9tXnn38uSRd85osv+64ysrKy9OWXX17U7eddunRRly5dNGXKFG3ZskW9e/
dWenq6nn76aUmV+9ldSEU/m88//1z16tUzL5pu2LBhhQ/0O/8ohy+1lT1PZ//+/
WrTpo3ZXlRUpEOHDl2WnwHwU7gGBVedsr/
8fvyXntvt1qJFiy56GXFxcfr666+1atUqs+3s2bN69dVXvcbFxMSobdu2+sMf/
mCeTvixEydOmP8ODQ2VpJ99kuz5EhMTlZeXp0ceeUTFxcVep3cq2lZJevHFF31ax/
l83YfHjh3TypUrzc8ej0d/+ctf1K1btwuesvBl3/nq8OHDZpAru727Ih6PR+fOnfNq69Kli/z9/
VVYWGi2hYaG+vxzu5CsrCyva4OOHDmid999V/369TP3e9u2beV2u71Opxw/ftxrH/taW2xsrIKCgjR//
nyvn+trr70mt9ut+Pj4S9gqwHccQcFVp1+/
fgoKCtLAgQP1yCOP6PTp03r11VcVHh6u48ePX9QyHnnkEb300ksaPny4fvvb36pZs2ZaunSp+ZCvsr9a/
f399ec//1kDBgxQp06d9OCDD6p58+b6+uuvtXHjRtlsNq1evVqSzAsjf/
e732nYsGGqU6eOBg4caAaXC0lISNBjjz2md999Vy1atNDNN99s9tlsNt18882aM2eOiouL1bx5c73//
vs6dOiQz/
vtx3zdh+3bt9fIkSO1Y8cORURE6PXXX1dubu5PhkJf9t1P+fjjj7VkyRKVlpYqPz9fO3bs0Ntvvy0/
Pz+9+eab6tq16wXn3bBhg1JSUjR06FC1b99e586d05tvvqmAgAAlJCSY42JiYrR+/
XrNnTtXkZGRioqKUs+ePX+2top07txZcXFxXrcZS9LMmTPNMcOGDdOkSZN099136/HHH9eZM2e0cOFCtW/
fvtyFzxdbW9OmTZWWlqaZM2eqf//
+GjRokPbv368FCxbol7/8ZZU86BDwSTXeQQRcERXdZrxq1Sqja9euRkhIiNG6dWvj97//
vfH666+Xu823VatWRnx8fIXLPXjwoBEfH2/
UrVvXaNq0qfHEE08Yb7/9tiHJ2Lp1q9fYnTt3GkOGDDEaN25sBAcHG61atTLuvfdeIzMz02vcU089ZTRv3t
zw9/
f36ZbjoUOHGpKMJ598slzf0aNHjbvvvtsICwsz7Ha7MXToUOPYsWOGJGP69OnmuLJbVE+cOFFuGRXdvurrP
ly3bp3RtWtXIzg42OjQoUO5W3fPv8XX1313vrLbjMumwMBAo1GjRkbPnj2NtLQ04/
Dhw+XmOb+GgwcPGg899JDRtm1bIyQkxGjUqJHRp08fY/
369V7z7du3z7j55puNunXrGpLM23p93aeSjOTkZGPJkiVGu3btjODgYKN79+7l9olhGMb7779vdO7c2QgKC
jKuu+46Y8mSJRUu80K1nX+bcZmXXnrJ6NChg1GnTh0jIiLCGDNmjPHtt996jbnllluMTp06lavpQrc/
A5XBu3iAKvTiiy9q/PjxOnr0qJo3b17d5QBAjUVAASrp+++/L/
eMke7du6ukpMS8ABQAUDlcgwJU0pAhQ9SyZUt169ZNbrdbS5Ys0b59+7R06dLqLg0AajwCClBJcXFx+vOf/
6ylS5eqpKRE0dHRWr58ue67777qLg0AajyfbjMuKSnR1KlTFRUVpbp166pt27Z66qmnvG5JMwxD06ZNU7Nm
zVS3bl3FxsaWu6+/7EVmNptNYWFhGjlyZIW3EQJWNm7cOP3nP//R6dOn9f333ys7O5twAgBVxKeA8vvf/
14LFy7USy+9pM8++0y///
3vNWfOHP3xj380x8yZM0fz589Xenq6tm3bptDQUMXFxens2bPmmMTERO3Zs0cZGRlas2aNNm/
ebL5pEwAAwKeLZO+8805FRETotddeM9sSEhJUt25dLVmyRIZhKDIyUk888YQmTJgg6YeHN0VERGjx4sUaNm
yYPvvsM0VHR2vHjh3q0aOHpB9evHbHHXfo6NGjioyMrOJNBAAANY1P16DceOONeuWVV/
T555+rffv2+uSTT/R///d/
mjt3riTp0KFDcrlcXo9Ettvt6tmzp7KysjRs2DBlZWUpLCzMDCfSD08w9Pf317Zt27zeeHohpaWlOnbsmBo
0aFClj5gGAACXj2EY+u677xQZGen11uyK+BRQJk+eLI/
How4dOiggIEAlJSV65plnzEdrl702PSIiwmu+iIgIs8/
lcik8PNy7iMBANWrU6IKvXS8sLPR6rPTXX3+t6OhoX0oHAAAWceTIkZ992aZPAeVvf/
ubli5dqmXLlqlTp07atWuXxo0bp8jIyJ98Jfqlmj17ttdjnsscOXLkJ99CCgAArMPj8ahFixZq0KDBz471K
aBMnDhRkydP1rBhwyT98NKsw4cPa/bs2UpKSjJf+pWbm6tmzZqZ8+Xm5pqvS3c4HMrLy/
Na7rlz53Tq1KkLvjQsLS1Nqamp5TbQZrMRUAAAqGEu5vIMn+7iOXPmTLlzRgEBASotLZUkRUVFyeFwKDMz0
+z3eDzatm2bnE6nJMnpdCo/P1/
Z2dnmmA0bNqi0tPSCL9cKDg42wwihBACA2s+nIygDBw7UM888o5YtW6pTp07auXOn5s6dq4ceekjSD4lo3L
hxevrpp9WuXTtFRUVp6tSpioyM1ODBgyVJHTt2VP/+/TVq1Cilp6eruLhYKSkpGjZsGHfwAAAAST4GlD/
+8Y+aOnWqHnvsMeXl5SkyMlKPPPKIpk2bZo558sknVVBQoNGjRys/
P1833XST1q5da76GXpKWLl2qlJQU9e3bV/7+/
kpISND8+fOrbqsAAECNViNfFujxeGS32+V2uzndAwBADeHL97dP16AAAABcCQQUAABgOQQUAABgOQQUAABg
OQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOT69LBDV77mdJ6u7BFxBk7s3qe4
SAKBacAQFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAA
BYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYDgEFAABYD
gEFAABYDgEFAABYDgEFAABYjk8BpXXr1vLz8ys3JScnS5LOnj2r5ORkNW7cWPXr11dCQoJyc3O9lpGTk6P4
+HjVq1dP4eHhmjhxos6dO1d1WwQAAGo8nwLKjh07dPz4cXPKyMiQJA0dOlSSNH78eK1evVorVqzQpk2bdOz
YMQ0ZMsScv6SkRPHx8SoqKtKWLVv0xhtvaPHixZo2bVoVbhIAAKjp/
AzDMCo787hx47RmzRodOHBAHo9HTZs21bJly3TPPfdIkvbt26eOHTsqKytLvXr10nvvvac777xTx44dU0RE
hCQpPT1dkyZN0okTJxQUFHRR6/
V4PLLb7XK73bLZbJUtv0Z6bufJ6i4BV9Dk7k2quwQAqDK+fH9X+hqUoqIiLVmyRA899JD8/
PyUnZ2t4uJixcbGmmM6dOigli1bKisrS5KUlZWlLl26mOFEkuLi4uTxeLRnz57KlgIAAGqZwMrO+M477yg/
P18jRoyQJLlcLgUFBSksLMxrXEREhFwulznmx+GkrL+s70IKCwtVWFhofvZ4PJUtGwAA1ACVPoLy2muvacC
AAYqMjKzKeio0e/Zs2e12c2rRosVlXycAAKg+lQoohw8f1vr16/Xwww+bbQ6HQ0VFRcrPz/
cam5ubK4fDYY45/66ess9lYyqSlpYmt9ttTkeOHKlM2QAAoIaoVEBZtGiRwsPDFR8fb7bFxMSoTp06yszMN
Nv279+vnJwcOZ1OSZLT6dTu3buVl5dnjsnIyJDNZlN0dPQF1xccHCybzeY1AQCA2svna1BKS0u1aNEiJSUl
KTDwv7Pb7XaNHDlSqampatSokWw2m8aOHSun06levXpJkvr166fo6Gjdf//
9mjNnjlwul6ZMmaLk5GQFBwdX3VYBAIAazeeAsn79euXk5Oihhx4q1zdv3jz5+/
srISFBhYWFiouL04IFC8z+gIAArVmzRmPGjJHT6VRoaKiSkpI0a9asS9sKAABQq1zSc1CqC89BwdWC56AAq
E2uyHNQAAAALhcCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAA
sBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBw
CCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCg
AAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsBwCCgAAsByfA8rXX3+t3/
zmN2rcuLHq1q2rLl266KOPPjL7DcPQtGnT1KxZM9WtW1exsbE6cOCA1zJOnTqlxMRE2Ww2hYWFaeTIkTp9+
vSlbw0AAKgVfAoo3377rXr37q06derovffe0969e/XCCy+oYcOG5pg5c+Zo/
vz5Sk9P17Zt2xQaGqq4uDidPXvWHJOYmKg9e/
YoIyNDa9as0ebNmzV69Oiq2yoAAFCj+RmGYVzs4MmTJ+vDDz/Uv//
97wr7DcNQZGSknnjiCU2YMEGS5Ha7FRERocWLF2vYsGH67LPPFB0drR07dqhHjx6SpLVr1+qOO+7Q0aNHFR
kZ+bN1eDwe2e12ud1u2Wy2iy2/Vnhu58nqLgFX0OTuTaq7BACoMr58f/
t0BGXVqlXq0aOHhg4dqvDwcHXv3l2vvvqq2X/
o0CG5XC7FxsaabXa7XT179lRWVpYkKSsrS2FhYWY4kaTY2Fj5+/tr27ZtFa63sLBQHo/
HawIAALWXTwHl4MGDWrhwodq1a6d169ZpzJgxevzxx/XGG29IklwulyQpIiLCa76IiAizz+VyKTw83Ks/
MDBQjRo1Msecb/bs2bLb7ebUokULX8oGAAA1jE8BpbS0VNdff72effZZde/
eXaNHj9aoUaOUnp5+ueqTJKWlpcntdpvTkSNHLuv6AABA9fIpoDRr1kzR0dFebR07dlROTo4kyeFwSJJyc3
O9xuTm5pp9DodDeXl5Xv3nzp3TqVOnzDHnCw4Ols1m85oAAEDt5VNA6d27t/bv3+/
V9vnnn6tVq1aSpKioKDkcDmVmZpr9Ho9H27Ztk9PplCQ5nU7l5+crOzvbHLNhwwaVlpaqZ8+eld4QAABQew
T6Mnj8+PG68cYb9eyzz+ree+/
V9u3b9corr+iVV16RJPn5+WncuHF6+umn1a5dO0VFRWnq1KmKjIzU4MGDJf1wxKV///
7mqaHi4mKlpKRo2LBhF3UHDwAAqP18Cii//OUvtXLlSqWlpWnWrFmKiorSiy+
+qMTERHPMk08+qYKCAo0ePVr5+fm66aabtHbtWoWEhJhjli5dqpSUFPXt21f+/v5KSEjQ/
Pnzq26rAABAjebTc1Csgueg4GrBc1AA1CaX7TkoAAAAVwIBBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAA
WA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4
BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQ
AAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWA4BBQAAWI5PAWXGjBny8/
Pzmjp06GD2nz17VsnJyWrcuLHq16+vhIQE5ebmei0jJydH8fHxqlevnsLDwzVx4kSdO3euarYGAADUCoG+z
tCpUyetX7/+vwsI/
O8ixo8fr3/+859asWKF7Ha7UlJSNGTIEH344YeSpJKSEsXHx8vhcGjLli06fvy4HnjgAdWpU0fPPvtsFWwO
AACoDXwOKIGBgXI4HOXa3W63XnvtNS1btky33XabJGnRokXq2LGjtm7dql69eun999/
X3r17tX79ekVERKhbt2566qmnNGnSJM2YMUNBQUGXvkUAAKDG8/kalAMHDigyMlJt2
rRRYmKicnJyJEnZ2dkqLi5WbGysObZDhw5q2bKlsrKyJElZWVnq0qWLIiIizDFxcXHyeDzas2fPBddZWFgo
j8fjNQEAgNrLp4DSs2dPLV68WGvXrtXChQt16NAh/
epXv9J3330nl8uloKAghYWFec0TEREhl8slSXK5XF7hpKy/
rO9CZs+eLbvdbk4tWrTwpWwAAFDD+HSKZ8CAAea/
u3btqp49e6pVq1b629/+prp161Z5cWXS0tKUmppqfvZ4PIQUAABqsUu6zTgsLEzt27fXF198IYfDoaKiIuX
n53uNyc3NNa9ZcTgc5e7qKftc0XUtZYKDg2Wz2bwmAABQe11SQDl9+rS+/PJLNWvWTDExMapTp44yMzPN/
v379ysnJ0dOp1OS5HQ6tXv3buXl5ZljMjIyZLPZFB0dfSmlAACAWsSnUzwTJkzQwIED1apVKx07dkzTp09X
QECAhg8fLrvdrpEjRyo1NVWNGjWSzWbT2LFj5XQ61atXL0lSv379FB0drfvvv19z5syRy+XSlClTlJycrOD
g4MuygQAAoObxKaAcPXpUw4cP1zfffKOmTZvqpptu0tatW9W0aVNJ0rx58+Tv76+EhAQVFhYqLi5OCxYsMO
cPCAjQmjVrNGbMGDmdToWGhiopKUmzZs2q2q0CAAA1mp9hGEZ1F+Erj8cju90ut9t91V2P8tzOk9VdAq6gy
d2bVHcJAFBlfPn+5l08AADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggo
AADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAAD
AcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAcg
goAADAcggoAADAcggoAADAcggoAADAcggoAADAcggoAADAci4poDz33HPy8/
PTuHHjzLazZ88qOTlZjRs3Vv369ZWQkKDc3Fyv+XJychQfH6969eopPDxcEydO1Llz5y6lFAAAUItUOqDs2
LFDf/
rTn9S1a1ev9vHjx2v16tVasWKFNm3apGPHjmnIkCFmf0lJieLj41VUVKQtW7bojTfe0OLFizVt2rTKbwUAA
KhVKhVQTp8+rcTERL366qtq2LCh2e52u/Xaa69p7ty5uu222xQTE6NFixZpy5Yt2rp1qyTp/
fff1969e7VkyRJ169ZNAwYM0FNPPaWXX35ZRUVFVbNVAACgRqtUQElOTlZ8fLxiY2O92rOzs1VcXOzV3qFD
B7Vs2VJZWVmSpKysLHXp0kURERHmmLi4OHk8Hu3Zs6fC9RUWFsrj8XhNAACg9gr0dYbly5fr448/1o4dO8r
1uVwuBQUFKSwszKs9IiJCLpfLHPPjcFLWX9ZXkdmzZ2vmzJm+lgoAAGoon46gHDlyRL/
97W+1dOlShYSEXK6ayklLS5Pb7TanI0eOXLF1AwCAK8+ngJKdna28vDxdf/
31CgwMVGBgoDZt2qT58+crMDBQERERKioqUn5+vtd8ubm5cjgckiSHw1Hurp6yz2VjzhccHCybzeY1AQCA2
sungNK3b1/t3r1bu3btMqcePXooMTHR/HedOnWUmZlpzrN//
37l5OTI6XRKkpxOp3bv3q28vDxzTEZGhmw2m6Kjo6toswAAQE3m0zUoDRo0UOfOnb3aQkND1bhxY7N95MiR
Sk1NVaNGjWSz2TR27Fg5nU716tVLktSvXz9FR0fr/
vvv15w5c+RyuTRlyhQlJycrODi4ijYLAADUZD5fJPtz5s2bJ39/
fyUkJKiwsFBxcXFasGCB2R8QEKA1a9ZozJgxcjqdCg0NVVJSkmbNmlXVpQAAgBrKzzAMo7qL8JXH45Hdbpf
b7b7qrkd5bufJ6i4BV9Dk7k2quwQAqDK+fH/
zLh4AAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BB
QAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAA
GA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5
BBQAAGA5BBQAAGA5BBQAAGA5BBQAAGA5PgWUhQsXqmvXrrLZbLLZbHI6nXrvvffM/rNnzyo5OVmNGzdW/
fr1lZCQoNzcXK9l5OTkKD4+XvXq1VN4eLgmTpyoc+fOVc3WAACAWsGngHLNNdfoueeeU3Z2tj766CPddttt
uuuuu7Rnzx5J0vjx47V69WqtWLFCmzZt0rFjxzRkyBBz/
pKSEsXHx6uoqEhbtmzRG2+8ocWLF2vatGlVu1UAAKBG8zMMw7iUBTRq1EjPP/
+87rnnHjVt2lTLli3TPffcI0nat2+fOnbsqKysLPXq1Uvvvfee7rzzTh07dkwRERGSpPT0dE2aNEknTpxQU
FDQRa3T4/
HIbrfL7XbLZrNdSvk1znM7T1Z3CbiCJndvUt0lAECV8eX7u9LXoJSUlGj58uUqKCiQ0+lUdna2iouLFRsba
47p0KGDWrZsqaysLElSVlaWunTpYoYTSYqLi5PH4zGPwlSksLBQHo/HawIAALWXzwFl9+7dql+/voKDg/
Xoo49q5cqVio6OlsvlUlBQkMLCwrzGR0REyOVySZJcLpdXOCnrL+u7kNmzZ8tut5tTixYtfC0bAADUID4Hl
Ouuu067du3Stm3bNGbMGCUlJWnv3r2XozZTWlqa3G63OR05cuSyrg8AAFSvQF9nCAoK0rXXXitJiomJ0Y4d
O/S///u/uu+++1RUVKT8/
Hyvoyi5ublyOBySJIfDoe3bt3str+wun7IxFQkODlZwcLCvpQIAgBrqkp+DUlpaqsLCQsXExKhOnTrKzMw0
+/
bv36+cnBw5nU5JktPp1O7du5WXl2eOycjIkM1mU3R09KWWAgAAagmfjqCkpaVpwIABatmypb777jstW7ZMH
3zwgdatWye73a6RI0cqNTVVjRo1ks1m09ixY+V0OtWrVy9JUr9+/
RQdHa37779fc+bMkcvl0pQpU5ScnMwREgAAYPIpoOTl5emBBx7Q8ePHZbfb1bVrV61bt0633367JGnevHny
9/
dXQkKCCgsLFRcXpwULFpjzBwQEaM2aNRozZoycTqdCQ0OVlJSkWbNmVe1WAQCAGu2Sn4NSHXgOCq4WPAcFQ
G1yRZ6DAgAAcLkQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAA
gOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOU
QUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUA
AAgOUQUAAAgOUQUAAAgOUQUAAAgOUQUAAAgOX4FFBmz56tX/7yl2rQoIHCw8M1ePBg7d+/
32vM2bNnlZycrMaNG6t+/
fpKSEhQbm6u15icnBzFx8erXr16Cg8P18SJE3Xu3LlL3xoAAFAr+BRQNm3apOTkZG3dulUZGRkqLi5Wv379
VFBQYI4ZP368Vq9erRUrVmjTpk06duyYhgwZYvaXlJQoPj5eRUVF2rJli9544w0tXrxY06ZNq7qtAgAANZq
fYRhGZWc+ceKEwsPDtWnTJt18881yu91q2rSpli1bpnvuuUeStG/
fPnXs2FFZWVnq1auX3nvvPd155506duyYIiIiJEnp6emaNGmSTpw4oaCgoJ9dr8fjkd1ul9vtls1mq2z5Nd
JzO09Wdwm4giZ3b1LdJQBAlfHl+/
uSrkFxu92SpEaNGkmSsrOzVVxcrNjYWHNMhw4d1LJlS2VlZUmSsrKy1KVLFzOcSFJcXJw8Ho/
27NlzKeUAAIBaIrCyM5aWlmrcuHHq3bu3OnfuLElyuVwKCgpSWFiY19iIiAi5XC5zzI/DSVl/
WV9FCgsLVVhYaH72eDyVLRsAANQAlT6CkpycrP/
85z9avnx5VdZTodmzZ8tut5tTixYtLvs6AQBA9alUQElJSdGaNWu0ceNGXXPNNWa7w+FQUVGR8vPzvcbn5u
bK4XCYY86/
q6fsc9mY86WlpcntdpvTkSNHKlM2AACoIXwKKIZhKCUlRStXrtSGDRsUFRXl1R8TE6M6deooMzPTbNu/
f79ycnLkdDolSU6nU7t371ZeXp45JiMjQzabTdHR0RWuNzg4WDabzWsCAAC1l0/
XoCQnJ2vZsmV699131aBBA/
OaEbvdrrp168put2vkyJFKTU1Vo0aNZLPZNHbsWDmdTvXq1UuS1K9fP0VHR+v+++/
XnDlz5HK5NGXKFCUnJys4OLjqtxAAANQ4PgWUhQsXSpJuvfVWr/
ZFixZpxIgRkqR58+bJ399fCQkJKiwsVFxcnBYsWGCODQgI0Jo1azRmzBg5nU6FhoYqKSlJs2bNurQtAQAAt
cYlPQeluvAcFFwteA4KgNrkij0HBQAA4HIgoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMsh
oAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAA
AAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAM
shoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMvxOaBs3rxZAwcOVGRkpPz8/
PTOO+949RuGoWnTpqlZs2aqW7euYmNjdeDAAa8xp06dUmJiomw2m8LCwjRy5EidPn36kjYEAADUHj4HlIKC
Av3iF7/Qyy+/XGH/nDlzNH/
+fKWnp2vbtm0KDQ1VXFyczp49a45JTEzUnj17lJGRoTVr1mjz5s0aPXp05bcCAADUKn6GYRiVntnPTytXrt
TgwYMl/
XD0JDIyUk888YQmTJggSXK73YqIiNDixYs1bNgwffbZZ4qOjtaOHTvUo0cPSdLatWt1xx136OjRo4qMjPzZ
9Xo8HtntdrndbtlstsqWXyM9t/
NkdZeAK2hy9ybVXQIAVBlfvr+r9BqUQ4cOyeVyKTY21myz2+3q2bOnsrKyJElZWVkKCwszw4kkxcbGyt/
fX9u2bavKcgAAQA0VWJULc7lckqSIiAiv9oiICLPP5XIpPDzcu4jAQDVq1Mgcc77CwkIVFhaanz0eT1WWDQ
AALKZG3MUze/Zs2e12c2rRokV1lwQAAC6jKg0oDodDkpSbm+vVnpuba/
Y5HA7l5eV59Z87d06nTp0yx5wvLS1NbrfbnI4cOVKVZQMAAIup0oASFRUlh8OhzMxMs83j8Wjbtm1yOp2SJ
KfTqfz8fGVnZ5tjNmzYoNLSUvXs2bPC5QYHB8tms3lNAACg9vL5GpTTp0/riy+
+MD8fOnRIu3btUqNGjdSyZUuNGzdOTz/9tNq1a6eoqChNnTpVkZGR5p0+HTt2VP/+/
TVq1Cilp6eruLhYKSkpGjZs2EXdwQMAAGo/
nwPKRx99pD59+pifU1NTJUlJSUlavHixnnzySRUUFGj06NHKz8/
XTTfdpLVr1yokJMScZ+nSpUpJSVHfvn3l7++vhIQEzZ8/
vwo2BwAA1AaX9ByU6sJzUHC14DkoAGqTansOCgAAQFUgoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMs
hoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoA
AAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAA
MshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMshoAAAAMup1oDy8ssvq3Xr1goJ
CVHPnj21ffv26iwHAABYRGB1rfitt95Samqq0tPT1bNnT7344ouKi4vT/
v37FR4eXl1lAUC1eW7nyeouAVfQ5O5NqrsES6u2Iyhz587VqFGj9OCDDyo6Olrp6emqV6+eXn/
99eoqCQAAWES1BJSioiJlZ2crNjb2v4X4+ys2NlZZWVnVURIAALCQajnFc/
LkSZWUlCgiIsKrPSIiQvv27Ss3vrCwUIWFheZnt9stSfJ4PJe3UAs6e/
q76i4BV5DHE1TdJeAK4vf76nI1/n6XfW8bhvGzY6vtGhRfzJ49WzNnzizX3qJFi2qoBrhyyv9XD6C2uJp/
v7/77jvZ7fafHFMtAaVJkyYKCAhQbm6uV3tubq4cDke58WlpaUpNTTU/l5aW6tSpU2rcuLH8/
Pwue72oXh6PRy1atNCRI0dks9mquxwAVYjf76uLYRj67rvvFBkZ+bNjqyWgBAUFKSYmRpmZmRo8eLCkH0JH
ZmamUlJSyo0PDg5WcHCwV1tYWNgVqBRWYrPZ+B8YUEvx+331+LkjJ2Wq7RRPamqqkpKS1KNHD91www168cU
XVVBQoAcffLC6SgIAABZRbQHlvvvu04kTJzRt2jS5XC5169ZNa9euLXfhLAAAuPpU60WyKSkpFZ7SAX4sOD
hY06dPL3eaD0DNx+83LsTPuJh7fQAAAK4gXhYIAAAsh4ACAAAsh4ACAAAsh4ACAAAsp0Y86h5Xl5MnT+r11
19XVlaWXC6XJMnhcOjGG2/
UiBEj1LRp02quEABwuXEXDyxlx44diouLU7169RQbG2s+Fyc3N1eZmZk6c+aM1q1bpx49elRzpQCAy4mAAk
vp1auXfvGLXyg9Pb3ce5YMw9Cjjz6qTz/9VFlZWdVUIYDL6ciRI5o+fbpef/
316i4F1YyAAkupW7eudu7cqQ4dOlTYv2/fPnXv3l3ff//
9Fa4MwJXwySef6Prrr1dJSUl1l4JqxjUosBSHw6Ht27dfMKBs376d1yEANdiqVat+sv/
gwYNXqBJYHQEFljJhwgSNHj1a2dnZ6tu3b7lrUF599VX94Q9/qOYqAVTW4MGD5efnp586eH/
+6V1cnTjFA8t56623NG/ePGVnZ5uHeQMCAhQTE6PU1FTde++91VwhgMpq3ry5FixYoLvuuqvC/
l27dikmJoZTPCCgwLqKi4t18uRJSVKTJk1Up06daq4IwKUaNGiQunXrplmzZlXY/
8knn6h79+4qLS29wpXBajjFA8uqU6eOmjVrVt1lAKhCEydOVEFBwQX7r732Wm3cuPEKVgSr4ggKAACwHB51
DwAALIeAAgAALIeAAgAALIeAAqBa+Pn56Z133qnuMgBYFAEFwGXhcrk0duxYtWnTRsHBwWrRooUGDhyozMz
M6i4NQA3AbcYAqtxXX32l3r17KywsTM8//7y6dOmi4uJirVu3TsnJydq3b191lwjA4jiCAqDKPfbYY/
Lz89P27duVkJCg9u3bq1OnTkpNTdXWrVsrnGfSpElq37696tWrpzZt2mjq1KkqLi42+z/
55BP16dNHDRo0kM1mU0xMjD766CNJ0uHDhzVw4EA1bNhQoaGh6tSpk/
71r39dkW0FcHlwBAVAlTp16pTWrl2rZ555RqGhoeX6w8LCKpyvQYMGWrx4sSIjI7V7926NGjVKDRo00JNPP
ilJSkxMVPfu3bVw4UIFBARo165d5tOFk5OTVVRUpM2bNys0NFR79+5V/
fr1L9s2Arj8CCgAqtQXX3whwzAu+EbqC5kyZYr579atW2vChAlavny5GVBycnI0ceJEc7nt2rUzx+fk5Cgh
IUFdunSRJLVp0+ZSNwNANeMUD4AqVdmHU7/11lvq3bu3HA6H6tevrylTpignJ8fsT01N1cMPP6zY2Fg999x
z+vLLL82+xx9/XE8//
bR69+6t6dOn69NPP73k7QBQvQgoAKpUu3bt5Ofn59OFsFlZWUpMTNQdd9yhNWvWaOfOnfrd736noqIic8yM
GTO0Z88excfHa8OGDYqOjtbKlSslSQ8//LAOHjyo+++/X7t371aPHj30xz/
+scq3DcCVw7t4AFS5AQMGaPfu3dq/f3+561Dy8/MVFhYmPz8/rVy5UoMHD9YLL7ygBQsWeB0Vefjhh/
X3v/9d+fn5Fa5j+PDhKigo0KpVq8r1paWl6Z///CdHUoAajCMoAKrcyy+/rJKSEt1www16+
+23deDAAX322WeaP3++nE5nufHt2rVTTk6Oli9fri+//
FLz5883j45I0vfff6+UlBR98MEHOnz4sD788EPt2LFDHTt2lCSNGzdO69at06FDh/
Txxx9r48aNZh+AmomLZAFUuTZt2ujjjz/
WM888oyeeeELHjx9X06ZNFRMTo4ULF5YbP2jQII0fP14pKSkqLCxUfHy8pk6dqhkzZkiSAgIC9M033+iBBx
5Qbm6umjRpoiFDhmjmzJmSpJKSEiUnJ+vo0aOy2Wzq37+/
5s2bdyU3GUAV4xQPAACwHE7xAAAAyyGgAAAAyyGgAAAAyyGgAAAAyyGgAAAAyyGgAAAAyyGgAAAAyyGgAAA
AyyGgAAAAyyGgAAAAyyGgAAAAyyGgAAAAy/l/9E6fQZOsQK0AAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"y = data['Class']\n",
"x = data.drop('Class', axis=1)\n",
"\n",
"smote = SMOTE(random_state=42)\n",
"x_smote, y_smote = smote.fit_resample(x, y)"
],
"metadata": {
"id": "-ApQezubvW5E"
},
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(f\"Original dataset shape: {Counter(y)}\")\n",
"print(f\"Resampled dataset shape: {Counter(y_smote)}\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "6Z1FxRyavZns",
"outputId": "7bee76c8-711c-42c4-fefc-d6422d277f69"
},
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Original dataset shape: Counter({0: 763, 1: 9})\n",
"Resampled dataset shape: Counter({0: 763, 1: 763})\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"balanced_data = pd.concat([pd.DataFrame(x_smote), pd.DataFrame(y_smote,
columns=['Class'])], axis=1)\n"
],
"metadata": {
"id": "9yHckCJDvd47"
},
"execution_count": 13,
"outputs": []
},
{
"cell_type": "code",
"source": [
"sample1 = balanced_data.sample(frac=0.2, random_state=42)"
],
"metadata": {
"id": "1XKEVd5Hvinq"
},
"execution_count": 14,
"outputs": []
},
{
"cell_type": "code",
"source": [
"sample2 = balanced_data.groupby('Class', group_keys=False).apply(lambda x:
x.sample(frac=0.2, random_state=42))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2rOGhGHvvnN_",
"outputId": "8ee6762d-7113-4f58-f955-69d259815c22"
},
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"<ipython-input-15-bffbcd50aa06>:1: DeprecationWarning:
DataFrameGroupBy.apply operated on the grouping columns. This behavior is
deprecated, and in a future version of pandas the grouping columns will be excluded
from the operation. Either pass `include_groups=False` to exclude the groupings or
explicitly select the grouping columns after groupby to silence this warning.\n",
" sample2 = balanced_data.groupby('Class',
group_keys=False).apply(lambda x: x.sample(frac=0.2, random_state=42))\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"k = len(balanced_data) // int(0.2 * len(balanced_data))\n",
"start = np.random.randint(0, k)\n",
"sample3 = balanced_data.iloc[start::k]"
],
"metadata": {
"id": "1EUGXfQJvnKv"
},
"execution_count": 16,
"outputs": []
},
{
"cell_type": "code",
"source": [
"num_clusters = 5\n",
"cluster_labels = np.arange(len(balanced_data)) % num_clusters\n",
"balanced_data['Cluster'] = cluster_labels\n",
"selected_cluster = np.random.choice(num_clusters)\n",
"sample4 = balanced_data[balanced_data['Cluster'] ==
selected_cluster].drop('Cluster', axis=1)"
],
"metadata": {
"id": "IoNNKl3uvnI4"
},
"execution_count": 17,
"outputs": []
},
{
"cell_type": "code",
"source": [
"sample5 = balanced_data.sample(n=int(0.2 * len(balanced_data)),
replace=True, random_state=42)"
],
"metadata": {
"id": "GYsWlVw7vnG9"
},
"execution_count": 18,
"outputs": []
},
{
"cell_type": "code",
"source": [
"models = {\n",
" \"Logistic Regression\": LogisticRegression(),\n",
" \"Decision Tree\": DecisionTreeClassifier(),\n",
" \"Gradient Boosting\": GradientBoostingClassifier(n_estimators=100,
learning_rate=0.1, max_depth=3, random_state=42),\n",
" \"SVM\": SVC(),\n",
" \"k-NN\": KNeighborsClassifier()\n",
"}\n"
],
"metadata": {
"id": "GhblAu2DvnE9"
},
"execution_count": 19,
"outputs": []
},
{
"cell_type": "code",
"source": [
"results = {}\n",
"samples = [sample1, sample2, sample3, sample4, sample5]"
],
"metadata": {
"id": "07xKCviNvnC0"
},
"execution_count": 21,
"outputs": []
},
{
"cell_type": "code",
"source": [
"for model_name, model in models.items():\n",
" results[model_name] = []\n",
" for i, sample in enumerate(samples):\n",
" X_sample = sample.drop('Class', axis=1)\n",
" y_sample = sample['Class']\n",
"\n",
" X_train, X_test, y_train, y_test = train_test_split(X_sample,
y_sample, test_size=0.2, random_state=42)\n",
"\n",
" model.fit(X_train, y_train)\n",
" predictions = model.predict(X_test)\n",
" accuracy = accuracy_score(y_test, predictions)\n",
" results[model_name].append(accuracy)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9pQReQHrvnA0",
"outputId": "cdc23052-3cef-4ad6-9bfb-cf085b079312"
},
"execution_count": 22,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [

"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:465:
ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as
shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver
options:\n",
"
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" n_iter_i = _check_optimize_result(\n",

"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:465:
ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as
shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver
options:\n",
"
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" n_iter_i = _check_optimize_result(\n",

"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:465:
ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as
shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver
options:\n",
"
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" n_iter_i = _check_optimize_result(\n",

"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:465:
ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as
shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver
options:\n",
"
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" n_iter_i = _check_optimize_result(\n",
"/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/_logistic.py:465:
ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as
shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver
options:\n",
"
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" n_iter_i = _check_optimize_result(\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"results_df = pd.DataFrame(results,
index=[\"Sample1\", \"Sample2\", \"Sample3\", \"Sample4\", \"Sample5\"])\n",
"results_df.to_csv(\"model_accuracies.csv\")\n",
"print(\"Model accuracies saved to 'model_accuracies.csv'\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "GwLF3Ip3vm-n",
"outputId": "88706099-ffe7-41ea-ee19-16384586454e"
},
"execution_count": 23,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model accuracies saved to 'model_accuracies.csv'\n"
]
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "IAEIafrbvmy5"
},
"execution_count": null,
"outputs": []
}
],
"metadata": {
"colab": {
"provenance": [],
"gpuType": "T4"
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"nbformat": 4,
"nbformat_minor": 0
}

You might also like