├── README.md ├── 50_startups Success Rate Prediction ├── 50_Startups.csv └── Multiple_Linear_Regression.ipynb ├── House_Price_Prediction Detailed Analysis └── Feature_Selection.ipynb └── Fraud Detection Using ML └── fraud_detection.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # Machine Learning Projects 2 | 3 | Welcome to my Machine Learning Projects repository! This repository contains a collection of machine learning projects that cover various topics. 4 | -------------------------------------------------------------------------------- /50_startups Success Rate Prediction/50_Startups.csv: -------------------------------------------------------------------------------- 1 | R&D Spend,Administration,Marketing Spend,State,Profit 2 | 165349.2,136897.8,471784.1,New York,192261.83 3 | 162597.7,151377.59,443898.53,California,191792.06 4 | 153441.51,101145.55,407934.54,Florida,191050.39 5 | 144372.41,118671.85,383199.62,New York,182901.99 6 | 142107.34,91391.77,366168.42,Florida,166187.94 7 | 131876.9,99814.71,362861.36,New York,156991.12 8 | 134615.46,147198.87,127716.82,California,156122.51 9 | 130298.13,145530.06,323876.68,Florida,155752.6 10 | 120542.52,148718.95,311613.29,New York,152211.77 11 | 123334.88,108679.17,304981.62,California,149759.96 12 | 101913.08,110594.11,229160.95,Florida,146121.95 13 | 100671.96,91790.61,249744.55,California,144259.4 14 | 93863.75,127320.38,249839.44,Florida,141585.52 15 | 91992.39,135495.07,252664.93,California,134307.35 16 | 119943.24,156547.42,256512.92,Florida,132602.65 17 | 114523.61,122616.84,261776.23,New York,129917.04 18 | 78013.11,121597.55,264346.06,California,126992.93 19 | 94657.16,145077.58,282574.31,New York,125370.37 20 | 91749.16,114175.79,294919.57,Florida,124266.9 21 | 86419.7,153514.11,0,New York,122776.86 22 | 76253.86,113867.3,298664.47,California,118474.03 23 | 78389.47,153773.43,299737.29,New York,111313.02 24 | 73994.56,122782.75,303319.26,Florida,110352.25 25 | 67532.53,105751.03,304768.73,Florida,108733.99 26 | 77044.01,99281.34,140574.81,New York,108552.04 27 | 64664.71,139553.16,137962.62,California,107404.34 28 | 75328.87,144135.98,134050.07,Florida,105733.54 29 | 72107.6,127864.55,353183.81,New York,105008.31 30 | 66051.52,182645.56,118148.2,Florida,103282.38 31 | 65605.48,153032.06,107138.38,New York,101004.64 32 | 61994.48,115641.28,91131.24,Florida,99937.59 33 | 61136.38,152701.92,88218.23,New York,97483.56 34 | 63408.86,129219.61,46085.25,California,97427.84 35 | 55493.95,103057.49,214634.81,Florida,96778.92 36 | 46426.07,157693.92,210797.67,California,96712.8 37 | 46014.02,85047.44,205517.64,New York,96479.51 38 | 28663.76,127056.21,201126.82,Florida,90708.19 39 | 44069.95,51283.14,197029.42,California,89949.14 40 | 20229.59,65947.93,185265.1,New York,81229.06 41 | 38558.51,82982.09,174999.3,California,81005.76 42 | 28754.33,118546.05,172795.67,California,78239.91 43 | 27892.92,84710.77,164470.71,Florida,77798.83 44 | 23640.93,96189.63,148001.11,California,71498.49 45 | 15505.73,127382.3,35534.17,New York,69758.98 46 | 22177.74,154806.14,28334.72,California,65200.33 47 | 1000.23,124153.04,1903.93,New York,64926.08 48 | 1315.46,115816.21,297114.46,Florida,49490.75 49 | 0,135426.92,0,California,42559.73 50 | 542.05,51743.15,0,New York,35673.41 51 | 0,116983.8,45173.06,California,14681.4 -------------------------------------------------------------------------------- /50_startups Success Rate Prediction/Multiple_Linear_Regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "import pandas as pd" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "df = pd.read_csv('Startups.csv')" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 3, 26 | "metadata": {}, 27 | "outputs": [ 28 | { 29 | "data": { 30 | "text/html": [ 31 | "
\n", 32 | "\n", 45 | "\n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | "
R&D SpendAdministrationMarketing SpendStateProfit
0165349.20136897.80471784.10New York192261.83
1162597.70151377.59443898.53California191792.06
2153441.51101145.55407934.54Florida191050.39
3144372.41118671.85383199.62New York182901.99
4142107.3491391.77366168.42Florida166187.94
\n", 99 | "
" 100 | ], 101 | "text/plain": [ 102 | " R&D Spend Administration Marketing Spend State Profit\n", 103 | "0 165349.20 136897.80 471784.10 New York 192261.83\n", 104 | "1 162597.70 151377.59 443898.53 California 191792.06\n", 105 | "2 153441.51 101145.55 407934.54 Florida 191050.39\n", 106 | "3 144372.41 118671.85 383199.62 New York 182901.99\n", 107 | "4 142107.34 91391.77 366168.42 Florida 166187.94" 108 | ] 109 | }, 110 | "execution_count": 3, 111 | "metadata": {}, 112 | "output_type": "execute_result" 113 | } 114 | ], 115 | "source": [ 116 | "df.head()" 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": 4, 122 | "metadata": {}, 123 | "outputs": [ 124 | { 125 | "data": { 126 | "text/plain": [ 127 | "(50, 5)" 128 | ] 129 | }, 130 | "execution_count": 4, 131 | "metadata": {}, 132 | "output_type": "execute_result" 133 | } 134 | ], 135 | "source": [ 136 | "df.shape" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 5, 142 | "metadata": {}, 143 | "outputs": [], 144 | "source": [ 145 | "X = df.iloc[:, :-1] # independent data\n", 146 | "y = df.iloc[:, -1] # dependent data" 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "execution_count": 6, 152 | "metadata": {}, 153 | "outputs": [ 154 | { 155 | "data": { 156 | "text/plain": [ 157 | "New York 17\n", 158 | "California 17\n", 159 | "Florida 16\n", 160 | "Name: State, dtype: int64" 161 | ] 162 | }, 163 | "execution_count": 6, 164 | "metadata": {}, 165 | "output_type": "execute_result" 166 | } 167 | ], 168 | "source": [ 169 | "df['State'].value_counts() ## count the cities" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": 7, 175 | "metadata": {}, 176 | "outputs": [ 177 | { 178 | "data": { 179 | "text/plain": [ 180 | "R&D Spend 0\n", 181 | "Administration 0\n", 182 | "Marketing Spend 0\n", 183 | "State 0\n", 184 | "Profit 0\n", 185 | "dtype: int64" 186 | ] 187 | }, 188 | "execution_count": 7, 189 | "metadata": {}, 190 | "output_type": "execute_result" 191 | } 192 | ], 193 | "source": [ 194 | "df.isnull().sum() ## checking null values" 195 | ] 196 | }, 197 | { 198 | "cell_type": "code", 199 | "execution_count": 9, 200 | "metadata": {}, 201 | "outputs": [], 202 | "source": [ 203 | "states = pd.get_dummies(X['State'], drop_first=True) # Converting State column into one-hot-encoding" 204 | ] 205 | }, 206 | { 207 | "cell_type": "code", 208 | "execution_count": 12, 209 | "metadata": {}, 210 | "outputs": [], 211 | "source": [ 212 | "X = X.drop('State', axis=1) # droping state column" 213 | ] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "execution_count": 14, 218 | "metadata": {}, 219 | "outputs": [], 220 | "source": [ 221 | "X = pd.concat([X, states], axis=1)" 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "execution_count": 15, 227 | "metadata": {}, 228 | "outputs": [ 229 | { 230 | "data": { 231 | "text/html": [ 232 | "
\n", 233 | "\n", 246 | "\n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | "
R&D SpendAdministrationMarketing SpendFloridaNew York
0165349.20136897.80471784.1001
1162597.70151377.59443898.5300
2153441.51101145.55407934.5410
3144372.41118671.85383199.6201
4142107.3491391.77366168.4210
\n", 300 | "
" 301 | ], 302 | "text/plain": [ 303 | " R&D Spend Administration Marketing Spend Florida New York\n", 304 | "0 165349.20 136897.80 471784.10 0 1\n", 305 | "1 162597.70 151377.59 443898.53 0 0\n", 306 | "2 153441.51 101145.55 407934.54 1 0\n", 307 | "3 144372.41 118671.85 383199.62 0 1\n", 308 | "4 142107.34 91391.77 366168.42 1 0" 309 | ] 310 | }, 311 | "execution_count": 15, 312 | "metadata": {}, 313 | "output_type": "execute_result" 314 | } 315 | ], 316 | "source": [ 317 | "X.head()" 318 | ] 319 | }, 320 | { 321 | "cell_type": "code", 322 | "execution_count": 16, 323 | "metadata": {}, 324 | "outputs": [], 325 | "source": [ 326 | "from sklearn.model_selection import train_test_split" 327 | ] 328 | }, 329 | { 330 | "cell_type": "code", 331 | "execution_count": 17, 332 | "metadata": {}, 333 | "outputs": [], 334 | "source": [ 335 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)" 336 | ] 337 | }, 338 | { 339 | "cell_type": "code", 340 | "execution_count": 18, 341 | "metadata": {}, 342 | "outputs": [], 343 | "source": [ 344 | "from sklearn.linear_model import LinearRegression" 345 | ] 346 | }, 347 | { 348 | "cell_type": "code", 349 | "execution_count": 19, 350 | "metadata": {}, 351 | "outputs": [], 352 | "source": [ 353 | "regressor = LinearRegression()" 354 | ] 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": 20, 359 | "metadata": {}, 360 | "outputs": [ 361 | { 362 | "data": { 363 | "text/plain": [ 364 | "LinearRegression()" 365 | ] 366 | }, 367 | "execution_count": 20, 368 | "metadata": {}, 369 | "output_type": "execute_result" 370 | } 371 | ], 372 | "source": [ 373 | "regressor.fit(X_train, y_train)" 374 | ] 375 | }, 376 | { 377 | "cell_type": "code", 378 | "execution_count": 21, 379 | "metadata": {}, 380 | "outputs": [], 381 | "source": [ 382 | "y_pred = regressor.predict(X_test)" 383 | ] 384 | }, 385 | { 386 | "cell_type": "code", 387 | "execution_count": 24, 388 | "metadata": {}, 389 | "outputs": [ 390 | { 391 | "name": "stdout", 392 | "output_type": "stream", 393 | "text": [ 394 | "[103015.20159796 132582.27760816 132447.73845174 71976.09851258\n", 395 | " 178537.48221055]\n", 396 | "28 103282.38\n", 397 | "11 144259.40\n", 398 | "10 146121.95\n", 399 | "41 77798.83\n", 400 | "2 191050.39\n", 401 | "27 105008.31\n", 402 | "38 81229.06\n", 403 | "31 97483.56\n", 404 | "22 110352.25\n", 405 | "4 166187.94\n", 406 | "Name: Profit, dtype: float64\n" 407 | ] 408 | } 409 | ], 410 | "source": [ 411 | "print(y_pred[:5])\n", 412 | "print(y_test[:])" 413 | ] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": 28, 418 | "metadata": {}, 419 | "outputs": [], 420 | "source": [ 421 | "from sklearn.metrics import r2_score" 422 | ] 423 | }, 424 | { 425 | "cell_type": "code", 426 | "execution_count": 29, 427 | "metadata": {}, 428 | "outputs": [], 429 | "source": [ 430 | "score = r2_score(y_test, y_pred)" 431 | ] 432 | }, 433 | { 434 | "cell_type": "code", 435 | "execution_count": 30, 436 | "metadata": {}, 437 | "outputs": [ 438 | { 439 | "name": "stdout", 440 | "output_type": "stream", 441 | "text": [ 442 | "0.9347068473282423\n" 443 | ] 444 | } 445 | ], 446 | "source": [ 447 | "print(score)" 448 | ] 449 | }, 450 | { 451 | "cell_type": "code", 452 | "execution_count": null, 453 | "metadata": {}, 454 | "outputs": [], 455 | "source": [] 456 | } 457 | ], 458 | "metadata": { 459 | "kernelspec": { 460 | "display_name": "Python 3", 461 | "language": "python", 462 | "name": "python3" 463 | }, 464 | "language_info": { 465 | "codemirror_mode": { 466 | "name": "ipython", 467 | "version": 3 468 | }, 469 | "file_extension": ".py", 470 | "mimetype": "text/x-python", 471 | "name": "python", 472 | "nbconvert_exporter": "python", 473 | "pygments_lexer": "ipython3", 474 | "version": "3.8.5" 475 | } 476 | }, 477 | "nbformat": 4, 478 | "nbformat_minor": 4 479 | } 480 | -------------------------------------------------------------------------------- /House_Price_Prediction Detailed Analysis/Feature_Selection.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np\n", 11 | "\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "%matplotlib inline\n", 14 | "\n", 15 | "# for feature selection\n", 16 | "from sklearn.linear_model import Lasso\n", 17 | "from sklearn.feature_selection import SelectFromModel\n", 18 | "\n", 19 | "# to visualize all the column of the dataframe\n", 20 | "pd.pandas.set_option('display.max_columns', None)" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 2, 26 | "metadata": {}, 27 | "outputs": [], 28 | "source": [ 29 | "dataset = pd.read_csv('train.csv')" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 3, 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "data": { 39 | "text/html": [ 40 | "
\n", 41 | "\n", 54 | "\n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | "
Unnamed: 0IdSalePriceMSSubClassMSZoningLotFrontageLotAreaStreetAlleyLotShapeLandContourUtilitiesLotConfigLandSlopeNeighborhoodCondition1Condition2BldgTypeHouseStyleOverallQualOverallCondYearBuiltYearRemodAddRoofStyleRoofMatlExterior1stExterior2ndMasVnrTypeMasVnrAreaExterQualExterCondFoundationBsmtQualBsmtCondBsmtExposureBsmtFinType1BsmtFinSF1BsmtFinType2BsmtFinSF2BsmtUnfSFTotalBsmtSFHeatingHeatingQCCentralAirElectrical1stFlrSF2ndFlrSFLowQualFinSFGrLivAreaBsmtFullBathBsmtHalfBathFullBathHalfBathBedroomAbvGrKitchenAbvGrKitchenQualTotRmsAbvGrdFunctionalFireplacesFireplaceQuGarageTypeGarageYrBltGarageFinishGarageCarsGarageAreaGarageQualGarageCondPavedDriveWoodDeckSFOpenPorchSFEnclosedPorch3SsnPorchScreenPorchPoolAreaPoolQCFenceMiscFeatureMiscValMoSoldYrSoldSaleTypeSaleConditionLotFrontagenanMasVnrAreananGarageYrBltnan
00112.2476940.2352940.50.4182080.3663440.00.51.01.00.00.750.00.1818180.40.00.00.40.6666670.5000.0367650.0983610.00.00.80.80.250.122500.3333331.00.500.51.001.000.3333330.1250891.00.00.0642120.1400980.00.01.01.00.3561550.4135590.00.5777120.3333330.00.6666670.50.3750.3333330.6666670.5000001.00.0000000.60.00.0467290.6666670.500.3864601.01.01.00.0000000.1115170.0000000.00.00.00.00.50.00.00.0909090.501.00.50.00.00.0
11212.1090110.0000000.50.4950640.3913170.00.51.01.00.00.500.00.7272730.20.00.00.20.5555560.8750.2279410.5245900.00.00.40.40.500.000001.0000001.00.250.51.000.250.0000000.1732811.00.00.1215750.2065470.00.01.01.00.5030560.0000000.00.4702450.0000000.50.6666670.00.3750.3333331.0000000.3333331.00.3333331.00.00.2897200.6666670.500.3244011.01.01.00.3477250.0000000.0000000.00.00.00.00.50.00.00.3636360.251.00.50.00.00.0
22312.3171670.2352940.50.4349090.4223590.00.50.01.00.00.750.00.1818180.40.00.00.40.6666670.5000.0514710.1147540.00.00.80.80.250.101250.3333331.00.500.51.000.750.3333330.0861091.00.00.1857880.1505730.00.01.01.00.3834410.4193700.00.5930950.3333330.00.6666670.50.3750.3333330.6666670.3333331.00.3333331.00.00.0654210.6666670.500.4287731.01.01.00.0000000.0767820.0000000.00.00.00.00.50.00.00.7272730.501.00.50.00.00.0
33411.8493980.2941180.50.3885810.3902950.00.50.01.00.00.000.00.2272730.40.00.00.40.6666670.5000.6691180.6065570.00.00.91.00.500.000001.0000001.00.001.00.251.000.0000000.0382711.00.00.2311640.1237320.00.51.01.00.3999410.3661020.00.5791570.3333330.00.3333330.00.3750.3333330.6666670.4166671.00.3333330.40.60.0747661.0000000.750.4527501.01.01.00.0000000.0639850.4927540.00.00.00.00.50.00.00.0909090.001.00.00.00.00.0
44512.4292160.2352940.50.5131230.4687610.00.50.01.00.00.500.00.5909090.40.00.00.40.7777780.5000.0588240.1475410.00.00.80.80.250.218750.3333331.00.500.51.000.000.3333330.1160521.00.00.2097600.1873980.00.01.01.00.4662370.5099270.00.6665230.3333330.00.6666670.50.5000.3333330.6666670.5833331.00.3333331.00.00.0747660.6666670.750.5895631.01.01.00.2240370.1535650.0000000.00.00.00.00.50.00.01.0000000.501.00.50.00.00.0
\n", 588 | "
" 589 | ], 590 | "text/plain": [ 591 | " Unnamed: 0 Id SalePrice MSSubClass MSZoning LotFrontage LotArea \\\n", 592 | "0 0 1 12.247694 0.235294 0.5 0.418208 0.366344 \n", 593 | "1 1 2 12.109011 0.000000 0.5 0.495064 0.391317 \n", 594 | "2 2 3 12.317167 0.235294 0.5 0.434909 0.422359 \n", 595 | "3 3 4 11.849398 0.294118 0.5 0.388581 0.390295 \n", 596 | "4 4 5 12.429216 0.235294 0.5 0.513123 0.468761 \n", 597 | "\n", 598 | " Street Alley LotShape LandContour Utilities LotConfig LandSlope \\\n", 599 | "0 0.0 0.5 1.0 1.0 0.0 0.75 0.0 \n", 600 | "1 0.0 0.5 1.0 1.0 0.0 0.50 0.0 \n", 601 | "2 0.0 0.5 0.0 1.0 0.0 0.75 0.0 \n", 602 | "3 0.0 0.5 0.0 1.0 0.0 0.00 0.0 \n", 603 | "4 0.0 0.5 0.0 1.0 0.0 0.50 0.0 \n", 604 | "\n", 605 | " Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual \\\n", 606 | "0 0.181818 0.4 0.0 0.0 0.4 0.666667 \n", 607 | "1 0.727273 0.2 0.0 0.0 0.2 0.555556 \n", 608 | "2 0.181818 0.4 0.0 0.0 0.4 0.666667 \n", 609 | "3 0.227273 0.4 0.0 0.0 0.4 0.666667 \n", 610 | "4 0.590909 0.4 0.0 0.0 0.4 0.777778 \n", 611 | "\n", 612 | " OverallCond YearBuilt YearRemodAdd RoofStyle RoofMatl Exterior1st \\\n", 613 | "0 0.500 0.036765 0.098361 0.0 0.0 0.8 \n", 614 | "1 0.875 0.227941 0.524590 0.0 0.0 0.4 \n", 615 | "2 0.500 0.051471 0.114754 0.0 0.0 0.8 \n", 616 | "3 0.500 0.669118 0.606557 0.0 0.0 0.9 \n", 617 | "4 0.500 0.058824 0.147541 0.0 0.0 0.8 \n", 618 | "\n", 619 | " Exterior2nd MasVnrType MasVnrArea ExterQual ExterCond Foundation \\\n", 620 | "0 0.8 0.25 0.12250 0.333333 1.0 0.50 \n", 621 | "1 0.4 0.50 0.00000 1.000000 1.0 0.25 \n", 622 | "2 0.8 0.25 0.10125 0.333333 1.0 0.50 \n", 623 | "3 1.0 0.50 0.00000 1.000000 1.0 0.00 \n", 624 | "4 0.8 0.25 0.21875 0.333333 1.0 0.50 \n", 625 | "\n", 626 | " BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1 BsmtFinType2 \\\n", 627 | "0 0.5 1.00 1.00 0.333333 0.125089 1.0 \n", 628 | "1 0.5 1.00 0.25 0.000000 0.173281 1.0 \n", 629 | "2 0.5 1.00 0.75 0.333333 0.086109 1.0 \n", 630 | "3 1.0 0.25 1.00 0.000000 0.038271 1.0 \n", 631 | "4 0.5 1.00 0.00 0.333333 0.116052 1.0 \n", 632 | "\n", 633 | " BsmtFinSF2 BsmtUnfSF TotalBsmtSF Heating HeatingQC CentralAir \\\n", 634 | "0 0.0 0.064212 0.140098 0.0 0.0 1.0 \n", 635 | "1 0.0 0.121575 0.206547 0.0 0.0 1.0 \n", 636 | "2 0.0 0.185788 0.150573 0.0 0.0 1.0 \n", 637 | "3 0.0 0.231164 0.123732 0.0 0.5 1.0 \n", 638 | "4 0.0 0.209760 0.187398 0.0 0.0 1.0 \n", 639 | "\n", 640 | " Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath \\\n", 641 | "0 1.0 0.356155 0.413559 0.0 0.577712 0.333333 \n", 642 | "1 1.0 0.503056 0.000000 0.0 0.470245 0.000000 \n", 643 | "2 1.0 0.383441 0.419370 0.0 0.593095 0.333333 \n", 644 | "3 1.0 0.399941 0.366102 0.0 0.579157 0.333333 \n", 645 | "4 1.0 0.466237 0.509927 0.0 0.666523 0.333333 \n", 646 | "\n", 647 | " BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGr KitchenQual \\\n", 648 | "0 0.0 0.666667 0.5 0.375 0.333333 0.666667 \n", 649 | "1 0.5 0.666667 0.0 0.375 0.333333 1.000000 \n", 650 | "2 0.0 0.666667 0.5 0.375 0.333333 0.666667 \n", 651 | "3 0.0 0.333333 0.0 0.375 0.333333 0.666667 \n", 652 | "4 0.0 0.666667 0.5 0.500 0.333333 0.666667 \n", 653 | "\n", 654 | " TotRmsAbvGrd Functional Fireplaces FireplaceQu GarageType GarageYrBlt \\\n", 655 | "0 0.500000 1.0 0.000000 0.6 0.0 0.046729 \n", 656 | "1 0.333333 1.0 0.333333 1.0 0.0 0.289720 \n", 657 | "2 0.333333 1.0 0.333333 1.0 0.0 0.065421 \n", 658 | "3 0.416667 1.0 0.333333 0.4 0.6 0.074766 \n", 659 | "4 0.583333 1.0 0.333333 1.0 0.0 0.074766 \n", 660 | "\n", 661 | " GarageFinish GarageCars GarageArea GarageQual GarageCond PavedDrive \\\n", 662 | "0 0.666667 0.50 0.386460 1.0 1.0 1.0 \n", 663 | "1 0.666667 0.50 0.324401 1.0 1.0 1.0 \n", 664 | "2 0.666667 0.50 0.428773 1.0 1.0 1.0 \n", 665 | "3 1.000000 0.75 0.452750 1.0 1.0 1.0 \n", 666 | "4 0.666667 0.75 0.589563 1.0 1.0 1.0 \n", 667 | "\n", 668 | " WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolArea \\\n", 669 | "0 0.000000 0.111517 0.000000 0.0 0.0 0.0 \n", 670 | "1 0.347725 0.000000 0.000000 0.0 0.0 0.0 \n", 671 | "2 0.000000 0.076782 0.000000 0.0 0.0 0.0 \n", 672 | "3 0.000000 0.063985 0.492754 0.0 0.0 0.0 \n", 673 | "4 0.224037 0.153565 0.000000 0.0 0.0 0.0 \n", 674 | "\n", 675 | " PoolQC Fence MiscFeature MiscVal MoSold YrSold SaleType \\\n", 676 | "0 0.0 0.5 0.0 0.0 0.090909 0.50 1.0 \n", 677 | "1 0.0 0.5 0.0 0.0 0.363636 0.25 1.0 \n", 678 | "2 0.0 0.5 0.0 0.0 0.727273 0.50 1.0 \n", 679 | "3 0.0 0.5 0.0 0.0 0.090909 0.00 1.0 \n", 680 | "4 0.0 0.5 0.0 0.0 1.000000 0.50 1.0 \n", 681 | "\n", 682 | " SaleCondition LotFrontagenan MasVnrAreanan GarageYrBltnan \n", 683 | "0 0.5 0.0 0.0 0.0 \n", 684 | "1 0.5 0.0 0.0 0.0 \n", 685 | "2 0.5 0.0 0.0 0.0 \n", 686 | "3 0.0 0.0 0.0 0.0 \n", 687 | "4 0.5 0.0 0.0 0.0 " 688 | ] 689 | }, 690 | "execution_count": 3, 691 | "metadata": {}, 692 | "output_type": "execute_result" 693 | } 694 | ], 695 | "source": [ 696 | "dataset.head()" 697 | ] 698 | }, 699 | { 700 | "cell_type": "code", 701 | "execution_count": 4, 702 | "metadata": {}, 703 | "outputs": [], 704 | "source": [ 705 | "# capture the dependent dataset\n", 706 | "y_train = dataset[['SalePrice']]" 707 | ] 708 | }, 709 | { 710 | "cell_type": "code", 711 | "execution_count": 5, 712 | "metadata": {}, 713 | "outputs": [], 714 | "source": [ 715 | "# drop the dependent feature from dataset\n", 716 | "X_train = dataset.drop(['Id', 'SalePrice'], axis=1)" 717 | ] 718 | }, 719 | { 720 | "cell_type": "code", 721 | "execution_count": 6, 722 | "metadata": {}, 723 | "outputs": [ 724 | { 725 | "data": { 726 | "text/plain": [ 727 | "SelectFromModel(estimator=Lasso(alpha=0.05, random_state=0))" 728 | ] 729 | }, 730 | "execution_count": 6, 731 | "metadata": {}, 732 | "output_type": "execute_result" 733 | } 734 | ], 735 | "source": [ 736 | "# Apply Feature Selection \n", 737 | "# First, I specify the Lasso Regression model, and I \n", 738 | "# Selected a suitable alpha (equivalent of penalty).\n", 739 | "# The bigger the alpha the less features that will be selected\n", 740 | "\n", 741 | "# Then I use selectfromModel object from sklearn which\n", 742 | "# will select the feature which co-officients are non zero\n", 743 | "\n", 744 | "feature_sel_model = SelectFromModel(Lasso(alpha=0.05, random_state=0))\n", 745 | "feature_sel_model.fit(X_train, y_train)" 746 | ] 747 | }, 748 | { 749 | "cell_type": "code", 750 | "execution_count": 7, 751 | "metadata": {}, 752 | "outputs": [ 753 | { 754 | "data": { 755 | "text/plain": [ 756 | "array([ True, False, False, False, False, False, False, False, False,\n", 757 | " False, False, False, False, False, False, False, False, False,\n", 758 | " False, False, True, False, False, False, False, False, False,\n", 759 | " True, False, False, True, False, False, False, False, False,\n", 760 | " False, False, False, False, False, False, False, False, False,\n", 761 | " False, False, False, False, False, False, False, False, False,\n", 762 | " False, False, False, False, False, False, False, False, False,\n", 763 | " False, False, False, False, False, False, False, False, False,\n", 764 | " False, False, False, False, False, False, False, False, False,\n", 765 | " False, False])" 766 | ] 767 | }, 768 | "execution_count": 7, 769 | "metadata": {}, 770 | "output_type": "execute_result" 771 | } 772 | ], 773 | "source": [ 774 | "feature_sel_model.get_support()" 775 | ] 776 | }, 777 | { 778 | "cell_type": "code", 779 | "execution_count": 14, 780 | "metadata": {}, 781 | "outputs": [ 782 | { 783 | "name": "stdout", 784 | "output_type": "stream", 785 | "text": [ 786 | "Total features: 83\n", 787 | "selected featrues: 4\n", 788 | "features with cofficients shrank to zero: 79\n" 789 | ] 790 | } 791 | ], 792 | "source": [ 793 | "# Let's print the number of total and selected features\n", 794 | "# this is how we can make a list of the selected features\n", 795 | "\n", 796 | "selected_feat = X_train.columns[(feature_sel_model.get_support())]\n", 797 | "\n", 798 | "# let's print some stats\n", 799 | "print('Total features: {}'.format(X_train.shape[1]))\n", 800 | "print(\"selected featrues: {}\".format(len(selected_feat)))\n", 801 | "print('features with cofficients shrank to zero: {}'.format(\n", 802 | " np.sum(feature_sel_model.estimator_.coef_ == 0)))" 803 | ] 804 | }, 805 | { 806 | "cell_type": "code", 807 | "execution_count": 16, 808 | "metadata": {}, 809 | "outputs": [], 810 | "source": [ 811 | "X_train = X_train[selected_feat]" 812 | ] 813 | }, 814 | { 815 | "cell_type": "code", 816 | "execution_count": 17, 817 | "metadata": {}, 818 | "outputs": [ 819 | { 820 | "data": { 821 | "text/html": [ 822 | "
\n", 823 | "\n", 836 | "\n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | "
Unnamed: 0YearRemodAddExterQualBsmtQual
000.0983610.3333330.5
110.5245901.0000000.5
220.1147540.3333330.5
330.6065571.0000001.0
440.1475410.3333330.5
\n", 884 | "
" 885 | ], 886 | "text/plain": [ 887 | " Unnamed: 0 YearRemodAdd ExterQual BsmtQual\n", 888 | "0 0 0.098361 0.333333 0.5\n", 889 | "1 1 0.524590 1.000000 0.5\n", 890 | "2 2 0.114754 0.333333 0.5\n", 891 | "3 3 0.606557 1.000000 1.0\n", 892 | "4 4 0.147541 0.333333 0.5" 893 | ] 894 | }, 895 | "execution_count": 17, 896 | "metadata": {}, 897 | "output_type": "execute_result" 898 | } 899 | ], 900 | "source": [ 901 | "X_train.head()" 902 | ] 903 | }, 904 | { 905 | "cell_type": "code", 906 | "execution_count": null, 907 | "metadata": {}, 908 | "outputs": [], 909 | "source": [] 910 | } 911 | ], 912 | "metadata": { 913 | "kernelspec": { 914 | "display_name": "Python 3", 915 | "language": "python", 916 | "name": "python3" 917 | }, 918 | "language_info": { 919 | "codemirror_mode": { 920 | "name": "ipython", 921 | "version": 3 922 | }, 923 | "file_extension": ".py", 924 | "mimetype": "text/x-python", 925 | "name": "python", 926 | "nbconvert_exporter": "python", 927 | "pygments_lexer": "ipython3", 928 | "version": "3.8.5" 929 | } 930 | }, 931 | "nbformat": 4, 932 | "nbformat_minor": 4 933 | } 934 | -------------------------------------------------------------------------------- /Fraud Detection Using ML/fraud_detection.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np \n", 10 | "import pandas as pd \n", 11 | "import seaborn as sns \n", 12 | "import matplotlib.pyplot as plt \n", 13 | "%matplotlib inline\n", 14 | "from sklearn.model_selection import train_test_split \n", 15 | "from sklearn.preprocessing import StandardScaler\n", 16 | "from sklearn.metrics import classification_report, accuracy_score, confusion_matrix\n", 17 | "from sklearn.linear_model import LogisticRegression \n", 18 | "\n", 19 | "sns.set_style('darkgrid')" 20 | ] 21 | }, 22 | { 23 | "cell_type": "code", 24 | "execution_count": 35, 25 | "metadata": {}, 26 | "outputs": [], 27 | "source": [ 28 | "## Dataset \n", 29 | "df = pd.read_csv('payment_fraud.csv')" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 36, 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "data": { 39 | "text/html": [ 40 | "
\n", 41 | "\n", 54 | "\n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | "
accountAgeDaysnumItemslocalTimepaymentMethodpaymentMethodAgeDayslabel
02914.745402paypal28.2048610
172514.742303storecredit0.0000000
284514.921318creditcard0.0000000
350314.886641creditcard0.0000000
4200015.040929creditcard0.0000000
\n", 114 | "
" 115 | ], 116 | "text/plain": [ 117 | " accountAgeDays numItems localTime paymentMethod paymentMethodAgeDays \\\n", 118 | "0 29 1 4.745402 paypal 28.204861 \n", 119 | "1 725 1 4.742303 storecredit 0.000000 \n", 120 | "2 845 1 4.921318 creditcard 0.000000 \n", 121 | "3 503 1 4.886641 creditcard 0.000000 \n", 122 | "4 2000 1 5.040929 creditcard 0.000000 \n", 123 | "\n", 124 | " label \n", 125 | "0 0 \n", 126 | "1 0 \n", 127 | "2 0 \n", 128 | "3 0 \n", 129 | "4 0 " 130 | ] 131 | }, 132 | "execution_count": 36, 133 | "metadata": {}, 134 | "output_type": "execute_result" 135 | } 136 | ], 137 | "source": [ 138 | "df.head()" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 37, 144 | "metadata": {}, 145 | "outputs": [ 146 | { 147 | "data": { 148 | "text/plain": [ 149 | "accountAgeDays 0\n", 150 | "numItems 0\n", 151 | "localTime 0\n", 152 | "paymentMethod 0\n", 153 | "paymentMethodAgeDays 0\n", 154 | "label 0\n", 155 | "dtype: int64" 156 | ] 157 | }, 158 | "execution_count": 37, 159 | "metadata": {}, 160 | "output_type": "execute_result" 161 | } 162 | ], 163 | "source": [ 164 | "df.isnull().sum() ## checking the null valeus " 165 | ] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "execution_count": 39, 170 | "metadata": {}, 171 | "outputs": [ 172 | { 173 | "data": { 174 | "text/plain": [ 175 | "0 38661\n", 176 | "1 560\n", 177 | "Name: label, dtype: int64" 178 | ] 179 | }, 180 | "execution_count": 39, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "df.label.value_counts() ## count the number of 0's and 1's" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 40, 192 | "metadata": {}, 193 | "outputs": [], 194 | "source": [ 195 | "## coverting paymentMethod column into label encoding\n", 196 | "paymthd_label = {v:k for k, v in enumerate(df.paymentMethod.unique())}\n", 197 | "\n", 198 | "df.paymentMethod = df.paymentMethod.map(paymthd_label)" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": 41, 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "data": { 208 | "text/html": [ 209 | "
\n", 210 | "\n", 223 | "\n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | "
accountAgeDaysnumItemslocalTimepaymentMethodpaymentMethodAgeDayslabel
02914.745402028.2048610
172514.74230310.0000000
284514.92131820.0000000
350314.88664120.0000000
4200015.04092920.0000000
\n", 283 | "
" 284 | ], 285 | "text/plain": [ 286 | " accountAgeDays numItems localTime paymentMethod paymentMethodAgeDays \\\n", 287 | "0 29 1 4.745402 0 28.204861 \n", 288 | "1 725 1 4.742303 1 0.000000 \n", 289 | "2 845 1 4.921318 2 0.000000 \n", 290 | "3 503 1 4.886641 2 0.000000 \n", 291 | "4 2000 1 5.040929 2 0.000000 \n", 292 | "\n", 293 | " label \n", 294 | "0 0 \n", 295 | "1 0 \n", 296 | "2 0 \n", 297 | "3 0 \n", 298 | "4 0 " 299 | ] 300 | }, 301 | "execution_count": 41, 302 | "metadata": {}, 303 | "output_type": "execute_result" 304 | } 305 | ], 306 | "source": [ 307 | "df.head()" 308 | ] 309 | }, 310 | { 311 | "cell_type": "code", 312 | "execution_count": 42, 313 | "metadata": {}, 314 | "outputs": [ 315 | { 316 | "data": { 317 | "image/png": "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nYyZvJk4w58P2/Vh1pQFTJk9lvf9mhIWdpseXQZxN/ou69dsZlXIEsxxcZz87XfWrQohfYZ0TJo5itUhS3B1c2XSmFncjb7r7G4+F2ZzPJ8Nn87CoFkYjQbWrtzE9as3yJjJm9HThtKjwwDmTlvEhFn+NPd7j1s3b9Ov65Pn1363eSfjZgxn2Yb5uLqaGDdsapq4mGv7lu95q3JZlocsAIOBYT3HULdJTdw9MrBm2QYmjpjBgsDpGIxG1iUew8dt81/yx9cHyPnO69TcOBwwsK/PAvI0roDJPT1nAnZyPvh/1AgeisUcz+3f/uD82h8xpnOjwrQu1AgeisHkwsERy7HEpOEh2URms5n+A0ayZXMARqORJUsCuXz5KpkzZ2LB/Ek09/3gsdtFRESyYuU6vt+xlrg4M8d+OUFAwFoHRy/Pg8FqTV2p//jx48mdOzetWrVi3759DB48mEyZMjFt2jTy5MnDggULyJs3L3PmzHnktblz5zJu3DheffVVtm3bxtq1axk1ahQtW7Zk69atREVFUatWLVavXs26devIli0b77//PqGhofj7+7Ns2TIGDx5M7dq1eeONN2jatCnbtm2zzSsaOnQohQoVwmg0cuXKFfr378/FixepXbs2v/32G82aNWPmzJm89NJLHDx4kBs3bvD666/Tp08fVq1aBUBsbCwffPABH374IXfv3mXTpk1Mnz6dsLAw6tSpw5o1a/Dx8WHEiBFERERQunRpWrduzfLly3nzzTcpVKgQ8+fPJy4ujm7duj31WMb9ddbu/7/SggKF33N2CKlCBpe0O2z3vJkMqbsa7CiDXQo4O4RUod1fO50dQqphjv3Toe93b7/jkuP0ZR+9/Zs9pboKZJUqVfD392fTpk1kypQJFxcX/P39+fTTTzEajWTPnp327duTI0eOR157+eWXGT16NFarFRcXF8aNG0f27Nl5++23adasGbly5SJ37txPff/ixYszefJk6tatS82aNW3JIyTMnxwwYADr169n0KBBtG7dmpdeeol06RL+sPr7+zNw4EDbPKSxY8cCcObMGfz8/DAYDJjNZho0aMBbb73FjRs3mDNnDr6+vri5ueHj48P169fx8fHB19eX999/H39/fwDeeOMNBg0ahLu7O66urowaNcoOR19EREQkFVYgU4NDhw4RHR1NxYoVOX/+PJ07d2bbtm3P9T2OHTvG8uXLmThx4r/ehyqQz0YVyGejCuSzUwXy2agC+WxUgXx2Dq9A/rzaYe+V/s3mDnsvSIUVyNTAx8eHPn368Pnnn2M2mxk+fPhz3f/y5ctZu3YtM2fO/OeVRURERJ4zJZB2kD17dpYtW2a3/bdp04Y2bdrYbf8iIiLyHKThK/JT3W18RERERMS5VIEUERERsQcn3J/RUVSBFBEREZFkUQVSRERExB40B1JEREREJIEqkCIiIiL2oAqkiIiIiEgCJZAiIiIikiwawhYRERGxA6s13tkh2I0qkCIiIiKSLKpAioiIiNiDLqIREREREUmgCqSIiIiIPehRhiIiIiIiCVSBFBEREbEHzYEUEREREUmgCqSIiIiIPWgOpIiIiIhIAlUgRUREROxBcyBFRERERBKoAikiIiJiD5oDKSIiIiKSQBVIEREREXvQHEgRERERkQRKIEVEREQkWTSELSIiImIPGsIWEREREUmgCqSIiIiIPeg2PiIiIiIiCVSBFBEREbEHzYEUEREREUmgCqSIiIiIPWgOpIiIiIhIAlUgRUREROxBcyBFRERERBKoAikiIiJiD5oDKSIiIiKSQBVIEREREXtIw3MglUD+hxUo/J6zQ0gVzpxa7+wQUoX8hRo5O4RUI5Obp7NDSBVm8IezQ0gVymQr6OwQ5D9ICaSIiIiIPaThCqTmQIqIiIhIsiiBFBEREUnjLBYLw4cPp0WLFvj5+XHhwoUk7Rs3bqRx48Y0bdqUFStW/OP+NIQtIiIiYg9Wq7MjsNm2bRuxsbEEBQVx5MgRJkyYwNy5c23tEydOJCQkBHd3d+rVq0e9evXImDHjE/enBFJEREQkjTt48CCVKlUCoESJEvz6669J2gsXLkxERAQmkwmr1YrBYHjq/pRAioiIiNiDAy+iCQoKIigoyLbcokULWrRoYVuOjIzE0/P+HSBcXFwwm82YTAmpYMGCBWnatCkZMmSgRo0aeHt7P/X9lECKiIiIpHIPJ4wP8/T0JCoqyrZssVhsyePJkyf5/vvv2b59O+7u7vTv35+vv/6aOnXqPHF/uohGRERExB4sFsf9/INSpUqxe/duAI4cOUKhQoVsbV5eXqRPn5506dLh4uJClixZCA8Pf+r+VIEUERERSeNq1KjBnj17aNmyJVarlXHjxrFp0yaio6Nt1ctWrVrh6upKrly5aNy48VP3pwRSRERExB6sKedG4kajkVGjRiV5LX/+/LZ/v//++7z//vvPvr/nFpmIiIiI/CeoAikiIiJiD3qUoYiIiIhIAlUgRUREROwhBT2J5nlTBVJEREREkkUVSBERERF70BxIEREREZEEqkCKiIiI2IMqkCIiIiIiCVSBFBEREbGHFPQkmudNFUgRERERSRYlkCIiIiKSLBrCFhEREbEDq0U3EhcRERERAVSBFBEREbEP3cZHRERERCSBKpAiIiIi9qDb+IiIiIiIJFAFUkRERMQedBW2iIiIiEgCVSBFRERE7EFXYYuIiIiIJFAFUkRERMQeVIEUEREREUmgCqSIiIiIPVh1FbaIiIiICKAKpIiIiIh9aA6kiIiIiEgCJZAiIiIikiwawhYRERGxhzT8KEMlkGJ31WpVpmf/D4k3xxMUsJ7AZWuTtGfOkomZCyaQPn16rl29Tr/uw7l39x51GlSna8+OWK1WVn61lsDlwZhMJqbOHsMruV4iPt7CoN7+hP5+3jkdc6Jjx08yde4ilnw+0dmhOEX1WpXp2f8jzPHxrApYx8qlj55Ts774jPTp03Ht6g36dhvGvbv3bO0Tpo3g9q07TBg1HaPRyGcz/MlfIA/x8Rb6dRvKhfOXHN2l58JgMDBkQn8KFy1AbGwc/n3G88cDfalcoyIf9u1AvDme9StDWBuw8R+3qdu4Ju93aoZf/S4AtOvaijrv1cBitbBwxlJ2fL3L4f18ngwGAwPH96bgawWIjY1lbL9JXDr/p629Yo236Ny7HfHmeDYGbmHDihCMRiOfTu5P7vw+WOItjOo9gT8vXKZg0QL0H9OT+Ph44mLj8O8xjrC/bjmxd8+XwWCg//jeFHwtP3GxcYx75FhVoGPisQoJ3MKGFZsxGo0MntyP3Pl9iI+3MKb3Z7ZjNXBCH+Lj47l49g/G9Z2ENQ1fsZwWaQjbiWbNmsXKlSsBCAoKIi4uzskRPX8mk4nhY/rTpumH+DboQKt2Tcn+QtYk6/Ts/yEb1m6hef32HP/lJK3bNcNoNDJwWE9aN+5C41p+dOnensxZMlGlRkVcTC40qdOWGZPn0X9IDyf1zHkWBaxmxIQZxMbEOjsUpzCZTAwfOyDhnKrfnlZtmz1yTvXq/xHr12yhWb32HD92ktbtm9vaWrdrTuHXCtqWq9d+F4AmddoyZfznDBszwCH9sIeqdd4hXXo3/Op3YcaYOfTz725rM5lc6D+qJx+26EWHxh/T1K8RWbNneeo2hYsWpHGrBhgMBgC8vD1p1ak5bep/wIctejFgdE+H9/F5q1y7Im7p3OjU8GNmj1tAzxEf29pcTC709v+E7u/35cOmPWjcpgFZs2ehUs23APigUTfmT1pEL/9PAOg7qjuThs6ga7Ne7Nyym7aftHJKn+ylcu2KpEvnxgcNP2H2uAX0GNHV1uZicqGnfzd6vt+Prk170qhNA7Jkz0LFxGPVpVF3vpi0mJ7+Cce3U592fDntKz58rztubq68Xb28U/pkd1aL434cTAlkCjF//nwsafBqrQKF8nL+3B+E34kgLs7M/n2HKVu+VJJ1ypYrxa7tewD4ftuPVKxcHovFQrUK7xEREUnmLJkwANFR0ZwLvYDJ5ILBYMDLyzNNJt3/xOelnEwfN9TZYThNgUL5OH/uInfuhCecUz8d5s0KpZOsU6Z8SXZt/xGAndt+oGLlhD9OpcoWp2TZYgQsWW1bd+uWHQzqNRKAV3xe4q8bNx3Uk+ev5JvF2bNjHwDHDh3nteJFbG15C+bhj3OXiLgTgTnOzOGfjlGqfIknbpMxsze9hnzMxGHTbfu4G32XK5euksE9A+7u6bGmgeG5Em8WY+/3PwPw66HfKFKssK0tb8HcXDr/JxF3IjHHmTn68zFKlCvGrm9+ZHz/yQDkfCUHYTcSqoxDuo7k9+NngISEKiaNfckr/uYbtmN1/NBvvPrUY/ULJcq9we5vfmRC/ykAvPjAsTr96+9kzOQNgLunO+a4eAf3Rv6/NISdTMHBwezatYt79+5x8eJFPvjgA9atW4e/vz/58+dn5cqV/PXXXzRu3JjevXuTM2dOLl26RL169fj999/57bffePfdd+nTp49tn6tXr+bGjRv07t2bOXPmMGXKFPbv34/VaqV9+/bUqVMHPz8/ChcuzO+//467uztlypThxx9/JDw8nEWLFhEWFsbgwYMxmUy4uLgwceJEcuTI4cQjlcDTy5OI8AjbclRkFN7eXg+t40F4eCQAkZFReHl7AhAfH0/t+tUY/dmn7PjuB+LizERFRvOKz8vs2LeBLFkz0/H9bo7rTApRo0pF/rxyzdlhOI2XlwcRiecLJD1n7q/jaTunoiKj8fb25IUc2eg9sCsf+PWi/nu1kqwfHx/P1NljqFW/Gh+170Nq5enlQWTE/WNjiY/HxcWF+Ph4PL08iHigLSoqGi8vj8du4+rmysipnzJxxHRi7sUkeY+rl6+zfvcKXFyMLJy5zP6dsjMPL3ciw6NsyxaLxXbMPLw8iIy43xYVdRdPbw8g4ZwZMX0wletUYnCX4QDcvB4GwBtlitK8QxM+bNydtMTDy4OoBz57Dx+rqAfOo+ioaDwf+F0+bPog3q1TicFdRgDwx7lL9Bvbi/a9/IgKj+TQ3iMO7YvDpIEvWU+iBPJfiIyM5Msvv+T8+fN89NFHZM+e/bHr/fHHHyxatIh79+5RrVo1du/eTYYMGahSpUqSBLJ58+bMnTuXadOmsWvXLi5dukRgYCAxMTH4+vry9ttvA1CsWDGGDh1Kp06dSJ8+PYsXL2bgwIHs37+fa9euUbRoUQYNGsSBAwe4c+eOUxPIfp92o0y5khQpWogjB3+xve7h6UH4nYgk60ZGROHp6UHMvRg8H2r/JmQ7327ewZTZY2jasgGvFinIrp17mDh6JjlfysHK9QupValpmvumL4/q92l3ypZPOKcOP3BOPXzOAERERNrOKQ9Pd8LvRFCvUU2yZMnMV0FzyP5CNjK4p+fM7+dYs3IDAH0+GUr2kdPY8N0KqlV4j7vRdx3av+chMiIKd08P27LRaCQ+Pt7W5uHpbmvz8HAnIjzysdsULlqQXPl8GPrZANKlcyNfobwMGNWLn388QLYcWanzZlMA5gVO58j+Y/x6+DcH9fD5i4qITnJcDAaD7ZhFRUTh7vHgMctAxJ37SdLIXuPJOnY+izbPpUXldty7e4/qDavQoYcfvf0GcjvsjuM64gBREVG4P3CsjAbjE4+Vu4d7kmM1utcEZo9dwJeb5/B+5fb0HtWdjxr34Nzp8zRt/x49RnRl8qczHNcZ+X/TEPa/8OqrrwKQM2dOYmOTJi4PTgL28fHBy8sLb29vsmXLRqZMmUiXLp1tPtHjnD59muPHj+Pn50fnzp0xm81cvnwZgKJFiwLg7e1NgQIFbP+OiYmhWbNmZM6cmc6dOxMQEICLi8tz7XNyTR73OS0bdaL0q1XIndeHjJm8cXU1Ua5CaQ4eOJpk3QM/H6ZKjYoAvFu9Ij/vO4SnlwdBGxfh5uaK1WolOvouFouVO7fDbdWn27fDMbmaMDq5r+IYk8fNokXDjpQq/C55Hj6n9j90Tv10hCo1KgFQpXolft57iMULVlCvagtaNOzInBlfsmHNFtas3EAT3/p80qsTAHfv3sNisWCJT53DaUf2H6NStQoAFCtVlN9Phtrazv1+nlx5ffDO5I3J1UTp8iU4euDXx27z6+HfaFK5NZ2afMKAj4Zx9vQ5Jg6fTvidCGLuxRAbE0tsTCwRdyIeqf6mNkf3/8JbVcsB8Hqp1wg9ec7Wdu73C/jkfQXvTF6YXE2UKF+cXw4ep07TmrTr1hqAe3fvYbVYsVgs1G5SA98OTejarCeXL15xSn/s6dj+X3mrasJ0kKKlXiP05Flb28PHqmT5Yvx68Di1m9agbbeEuaAPHqvw2xFERSZUd/+6+hdeGb0efcM0wGqxOOzH0VSB/BceTgDd3Ny4ceMG+fPn57fffrNV/p6WKD5unxaLhXz58lGuXDlGjx6NxWJhzpw5vPLKK/+4/fbt2yldujTdunUjJCSEhQsXMn78+OR1zA7MZjOjh01m2Zp5GA1GVq1Yx7Ur18mYyZuJM/z5sF0fZk1ZwJTZY3nfrylhYbfp0WUQd6Pvsn7NZlaFLMEcF8fJ335n3aoQ0mdIx6SZo1gdsgRXN1cmjZmVKitF8u+ZzWZGD53E8jXzMRqNBAU8eE6N5MN2vZk1ZQFT54yhVdumhN28TfcuA5+4v69DtjPl89GsDlmCydXEyE8nptqK9vYtuyj/zpss3bQAgwGG9RpL3cY1yeCRgbXLNzB5xEzmBU7DaDCyLjCE61dvPHabJzn001HKHzlBwJaFWCwWDv98jL27fnZgD5+/77/+gXLvlGHhxtkYMDCqzwRqNa5OBvcMrA/YxPSRs5m5YjIGo4FNgVu4cfUvdm7ZzfBpg5gfPDPhzhAjZmGOM9N3dA+uXb7GZwtHA3Bo31G+mLzYyT18fr7/+gfKvlOGBRs/x4CBMX0+o2bjamRwz8CGgBBmjJzN9BWTMBoNbAr8mhtX/+L7LT8wdNpA5gbPwGQyMW3E58TGxDK+3yTGzB2O2RyPOc7M+H6Tnd09SSaDVdfNJ0twcDBnz56lX79+xMTEUKdOHUaMGMFnn31Gzpw5eeGFF3jppZdo3Lgxffr0YdWqVbb1duzYAcDbb7/Nnj17mDVrFtmyZeP9999n4MCBXL58maVLlzJhwgR++eUXoqOjqV69Ot26dcPPz882z7J37960bNmScuXKMXbsWEqUKMEbb7xB//79cXFxSbhtwuDBtorlk+TOWswRhyzVO3NqvbNDSBXyF2rk7BBSjUxuqbtq5yjpjW7ODiFVMPLsxYr/un2Xv3fo+0WNbeuw9/IYstRh7wVKIP/TlEA+GyWQz0YJ5LNTAvlslEA+GyWQz04J5POjIWwRERERe3DC/RkdRRfRiIiIiEiyqAIpIiIiYg9p+D6QqkCKiIiISLKoAikiIiJiD2nwEcV/UwVSRERERJJFCaSIiIiIJIuGsEVERETsQRfRiIiIiIgkUAVSRERExB50I3ERERERkQSqQIqIiIjYg+ZAioiIiIgkUAVSRERExA6supG4iIiIiEgCVSBFRERE7EFzIEVEREREEqgCKSIiImIPqkCKiIiIiCRQBVJERETEHvQkGhERERGRBKpAioiIiNiD5kCKiIiIiCRQAikiIiIiyaIhbBERERE7sGoIW0REREQkgSqQIiIiIvagCqSIiIiISAJVIEVERETswaIbiYuIiIiIAKpAioiIiNiH5kCKiIiIiCRQBVJERETEHlSBFBERERFJoAqkiIiIiB1YrapAioiIiIgAqkCKiIiI2IfmQIqIiIiIJFAFUkRERMQeVIEUEREREUmgCuR/WAaXdM4OIVXIX6iRs0NIFUJPb3B2CKlGyaKtnB1CqnAj5razQ0gV7sbHOjsE+Q9SAikiIiJiB1YNYYuIiIiIJFAFUkRERMQeVIEUEREREUmgCqSIiIiIPVicHYD9qAIpIiIiIsmiCqSIiIiIHegqbBERERGRRKpAioiIiNhDCqpAWiwW/P39OXXqFG5ubowZM4bcuXPb2o8dO8aECROwWq1kz56dSZMmkS7dkx84ogqkiIiISBq3bds2YmNjCQoKom/fvkyYMMHWZrVaGTZsGOPHj2flypVUqlSJP//886n7UwVSRERExB5S0FXYBw8epFKlSgCUKFGCX3/91dZ27tw5MmXKxFdffcXp06epXLky+fLle+r+lECKiIiIpHJBQUEEBQXZllu0aEGLFi1sy5GRkXh6etqWXVxcMJvNmEwmbt26xeHDhxk2bBi5c+fmo48+4vXXX6dChQpPfD8lkCIiIiJ24MirsB9OGB/m6elJVFSUbdlisWAyJaSBmTJlInfu3BQoUACASpUq8euvvz41gdQcSBEREZE0rlSpUuzevRuAI0eOUKhQIVubj48PUVFRXLhwAYADBw5QsGDBp+5PFUgRERERe0hBcyBr1KjBnj17aNmyJVarlXHjxrFp0yaio6Np0aIFY8eOpW/fvlitVkqWLMm777771P0pgRQRERFJ44xGI6NGjUryWv78+W3/rlChAmvWrHn2/T23yERERETkP0EVSBERERE70KMMRUREREQSqQIpIiIiYg8p6CKa500VSBERERFJFlUgRUREROzAqgqkiIiIiEgCVSBFRERE7EEVSBERERGRBKpAioiIiNiB5kCKiIiIiCRSBVJERETEHlSBFBERERFJoAqkiIiIiB1oDqSIiIiISCJVIEVERETsQBVIEREREZFESiBFREREJFk0hC0iIiJiBxrCFhERERFJpAqkiIiIiD1YDc6OwG5UgRQRERGRZFEFUkRERMQONAdSRERERCSRKpAiIiIidmC1aA6kyL9WpWYlVn/7FYFbvqR5m/ceac+UJSNfrprF8o0LmLpgHOkzpLO1pc+QjhUhC8lbIDcARqORsdOHsSJkIcs2zMcnz8uO6obdVa9VmU3bVrLu2+W837bpI+2Zs2Ri+dr5rNm8hNlfTiJ9hvRJ2idMG8Gg4b2AhOM0adYogr9eyuqQJeTO84ojupDiHDt+kvbdBjg7DIcxGAwMnziA5Zu/YHHwHHwe+v9euWZFAr9ZxPLNX9C0TaNn2mbAqJ74tm1sW65YtQIBWxYSsGUhQyf0t3+nHKRarcqs3xbA2m+W0tKvySPtmbNkYumaeawKWcyshRNtn7/aDaqxflsA678LoEWbhONkNBr5bOZIVm9ZQtCmReRKo5+/GrXf5ZsdqwjZupLWbZs/0p4lSyYCgxeyfssy5i+aSobEY1ai5Ous37KMDV8vZ+FX00mXzs3RoctzoATyXwoODmby5Mn/7/1UrVqVmJgY2rVrh5+fH2+//TYNGjTAz8+PuXPn0rt3b2JjY59DxM5hMrkwaHRvOvl2w6/Rh/j6NSbbC1mTrPNJ386ErP2WNg27cOKXU7Rom/DL+/XiRVi+YUGSP2hValUCoFX9zsz6bD6DRvZ2XGfsyGQyMXzsANo0/RDf+u1p1bYZ2R86Tr36f8T6NVtoVq89x4+dpHX7+7+wW7drTuHXCtqWq9d+F4AmddoyZfznDBvz30mi/rYoYDUjJswgNib1fn6Sq1qdyrilS0ebeh8wbexs+o/sYWszmVwYOKonXVr0pP17XWnephFZs2d54jaZs2Zi7oppts8cgLuHO31HdOOTNn1pXbczf/5xhcxZMzm6m8+dyWRi6Jh+tG36ES0bdKRlu6aP/J7q0f9DNqzdgm/9Dhz/5SSt2jXDaDQyYFhP/Bp/SJNafnTp3p7MWTJRrXZlAJrXbc/UCXMYOqafM7plVyaTiVHjBtGicWca12uLX/vmZH8hW5J1+gz8mHVrQnivrh+/HPsNvw4tAJg8cxS9PhlCozpt2LHtR17xeckZXXAIq8VxP46mBDKF+Oqrr1i2bBmVKlWif//+LFu2jK5duzJt2jTc3FLvt7N8hfJy8dwlwu9EEBdn5uBPRyhdrkSSdUqVK8EPO/cCsHvH/6jwzpsAuKZzpVv7AZz7/bxt3e1f72J433EAvOSTk5s3whzSD3srUCgf589d5M6dcOLizOz/6TBvViidZJ0y5Uuya/uPAOzc9gMVK5cHoFTZ4pQsW4yAJatt627dsoNBvUYC8IrPS/x146aDepJy+LyUk+njhjo7DIcqWa44exI/S8cOHqdo8VdtbQ9+Fs1xZg79fJTS5Us8cRt3jwzMmbyQTau/se2jRNk3+P1EKP39e/DVhnncvBHGrZu3HddBOylQKC8Xzv1h+z11YN9h3ixfKsk6ZcqVZNf2PQDs2vYjb1cuh8VioUaFxkRERJI5SyYMGIiKiua7LTv5tPcoAF72yclf19Pe569g4XycO/v376w4ftp3iPIP/c56s3xpdmxL+J21Y9sPvFO5AvkL5OFW2G26dG3Lus1LyZw5I6FnzjuhB/L/pTmQ/0+LFi1i8+bNmEwmypQpQ//+/bl58yaDBg0iIiICq9XKZ599Rvr06fH39ycmJobbt2/zySefUL169X/cf9WqVfn6668ZMWIEJpOJy5cvExsbS926ddm5cydXrlxhzpw55MqViylTprB//36sVivt27enTp06DjgCT+fp5UFEeKRtOSoqGi9vzyeuExV5v/3wz8ceu8/4+HgmzBpB9brv0rPTIDtF7lheDx2nyMioR46Tl5cn4Q8cJ29vT17IkY3eA7vygV8v6r9XK8n68fHxTJ09hlr1q/FR+z7270QKU6NKRf68cs3ZYThUwmcpyrZsibfg4uJCfHw8Hp4eREbcb/v7s/akbf68eIU/L16hUtUKtrbMWTPx5tulaVrVj+iouyzdOI+jB37hwtk/HNNBO/H08kz6eyry6b+nEj6fXkDC56xW/WqM+mwwO7/7AXOc2fb65NmjqVmvKp+0T3sVSK9Hjtn9Y3J/HQ8iwiMAiIxI+J2WJWtmyrxZkiEDxnI29ALLguZy9Mhxfty9z6HxO4pV94GUx7lw4QJff/01gYGBBAYGcuHCBXbu3MncuXOpWrUqgYGB9OrVi2PHjnH27Fk6dOjA4sWLGTZsGAEBAcl+v5dffplFixaRL18+Ll26xBdffEHNmjXZsWMHu3bt4tKlSwQGBrJ06VLmzZtHeHi4HXr9bHoO+oil6+YxZ+kUPL08bK97eLgTcSciybqREVF4eLontHs+2v44g7qPpHaFZoyaMoQM7un/cf2Uqt+n3QnauIgvV8zC0+v+HyxPTw/CHzoOERGReHomHEsPT3fC70RQr1FNsmTJzFdBc/i4ZycaNatLs/cb2bbp88lQ3i1bn8+m+5PBPYNjOiVO8+BnCcBgNBIfHw8k/IF397jf9vc59LRtHnY77A6/HjnBzRth3I2+y8F9R3j19UJ26o399f30E1ZuWMgXATOS/p5KPDYPioyIsn3+Hv58fhuynfKv18DVzZUmLRvYXu/3yTCqvtmQ8dOHp5nP38AhPQkO+YqvVs7GK8kx8yD8TtK/OREPHjOvhGN2K+w2589e5PSpUMxmMzu3/0jxEkUd2gd5PpRA/j+cOHGC4sWL4+rqisFgoEyZMvz++++cO3eOkiVLAlChQgUaNmxI9uzZCQoKon///gQGBmI2m5P9fq+99hoA3t7eFChQwPbv2NhYTp8+zfHjx/Hz86Nz586YzWYuX778/DqbTDMmzKNt44+oWLQWufK+QsZM3ri6mihboSSHD/ySZN3DPx+lcrW3AXin6lsc+OnIE/fbsHkduvRoD8Dd6HtYLRbi41PvjbYmj5tFi4YdKVX4XfLk9bEdp3IVSnNw/9Ek6x746QhVaiTMR6tSvRI/7z3E4gUrqFe1BS0admTOjC/ZsGYLa1ZuoIlvfT7p1QmAu3fvYbFYsDwhKZC04/DPx6hU7S0AipUuyu8nQm1tZ0+fI3c+H7wzeWNyNVG6fEmOHvj1qds87LdjJynwaj4yZcmIi4sLxUq/Tujpc/btlB1NGTeb9xt1puyrVcn9wOfvzQqlOXQg6QjIwZ+P8G6NigBUrl6R/fsO4enlQeDGL3Fzc8VqtRIdfReLxUJj3/p07dURgHt372GxWJ+YlKc2n42dQZP67XijYCXy5MtNpkwZcXV1pfxbZTiw/0iSdff/dIhqNd8BoGr1Svy09yAXzl/Cw9OdPHlzAVCuQmlOnTzj6G44TFqeA6kh7P+HIkWKcOzYMcxmMy4uLuzfv5/33nuPv/76i19++YVXX32V/fv38/3333PhwgWaN29O5cqVWbt2LevWrUv2+xkMTy6F58uXj3LlyjF69GgsFgtz5szhlVecf+Wf2RzPZ8OnszBoFkajgbUrN3H96g0yZvJm9LSh9OgwgLnTFjFhlj/N/d7j1s3b9Ov65Hlr323eybgZw1m2YT6uribGDZuaJi6SMJvNjB46ieVr5mM0GgkKWMe1K9fJmMmbiTNG8mG73syasoCpc8bQqm1Twm7epnuXgU/c39ch25ny+WhWhyzB5Gpi5KcTiUkDx0mebvuW73mrclmWhywAg4FhPcdQt0lN3D0ysGbZBiaOmMGCwOkYjEbWJX4WH7fNk9y6eZsZY+cwP3AGAN9u3M6Zk2cd1T27MZvNjB02ha/WzMVoMLJ6xXrb52/CDH+6tuvD51MWMHn2GFr6NeFW2G16dhnM3ei7bFizhaCQxcTFmTn522nWr9pMuvTpmDRrJEGbFmFyNTF6yMQ08XvqQWazmRFDJhAY/AUGo5HA5cFcvXKdTJkyMmXWaDr59WDapHnMnDue1m2bExZ2i4879ycuLo7e3Ycyd+EkDAYD+38+zLatu5zdHfkXDFar1ersIFKj4OBgzp49S9asWdmyZQsWi4XSpUszePBgbt26xaeffkpUVMK8onHjxnH06FFmzpxJtmzZyJkzJydPnmTz5s22OY7p0iXcumbQoEHUrVuXd95J/Nb2wBzIv1+fPHky+fLlo0mTJixZsoTY2Fg++OADJkyYwC+//EJ0dDTVq1enW7duT+3Dqy+Ute9BSiOizfecHUKqEHp6g7NDSDVKFm3l7BBShSjzXWeHkCrcjU9byak9Xb19wqHv90fZag57L5/92x32XqAE8j9NCeSzUQL5bJRAPjslkM9GCeSzUQL57JRAPj+aAykiIiIiyaI5kCIiIiJ2kJbHeFWBFBEREZFkUQVSRERExA6sFt1IXEREREQEUAVSRERExC5UgRQRERERSaQKpIiIiIgd6CpsEREREZFEqkCKiIiI2IHmQIqIiIiIJFIFUkRERMQOrFZVIEVEREREAFUgRUREROzCanF2BPajCqSIiIiIJIsqkCIiIiJ2YNEcSBERERGRBEogRURERCRZNIQtIiIiYge6jY+IiIiISCJVIEVERETsQI8yFBERERFJpAqkiIiIiB1Yrc6OwH5UgRQRERGRZFEFUkRERMQONAdSRERERCSRKpAiIiIidqBHGYqIiIiIJFIFUkRERMQO9CQaEREREZFEqkCKiIiI2IHuAykiIiIikkgVSBERERE70FXYIiIiIiKJlECKiIiISLJoCFtERETEDnQbHxERERGRRKpAioiIiNiBbuMjIiIiIpJIFUgRERERO0jLt/FRAvkfZjK4ODuEVCGTm6ezQ0gVShZt5ewQUo3Dx1c4O4RUQefUs/EwZXB2CPIfpARSRERExA50FbaIiIiISCJVIEVERETsIC3PgVQFUkRERESSRRVIERERETtIw7eBVAVSRERERJJHFUgRERERO9AcSBERERGRRKpAioiIiNiB7gMpIiIiIpJIFUgRERERO7A4OwA7UgVSRERERJJFCaSIiIiIJIuGsEVERETswErKuYjGYrHg7+/PqVOncHNzY8yYMeTOnfuR9YYNG0bGjBnp16/fU/enCqSIiIhIGrdt2zZiY2MJCgqib9++TJgw4ZF1AgMDOX369DPtTwmkiIiIiB1YrI77+ScHDx6kUqVKAJQoUYJff/01Sfvhw4c5evQoLVq0eKa+KYEUERERSeMiIyPx9PS0Lbu4uGA2mwG4fv06n3/+OcOHD3/m/WkOpIiIiIgdWBw4BzIoKIigoCDbcosWLZJUEz09PYmKirofm8WCyZSQBn7zzTfcunWLLl26cOPGDe7du0e+fPlo0qTJE99PCaSIiIhIKvdwwviwUqVKsXPnTurWrcuRI0coVKiQra1t27a0bdsWgODgYM6ePfvU5BGUQIqIiIjYRUq6CrtGjRrs2bOHli1bYrVaGTduHJs2bSI6OvqZ5z0+SAmkiIiISBpnNBoZNWpUktfy58//yHr/VHn8mxJIERERETvQowxFRERERBKpAikiIiJiBylpDuTzpgqkiIiIiCSLKpAiIiIidqA5kCIiIiIiiVSBFBEREbEDVSBFRERERBIpgRQRERGRZNEQtoiIiIgd6DY+IiIiIiKJVIEUERERsQNL2i1AqgIpIiIiIsmjCqSIiIiIHVg0B1JE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uw3AlzOXMnbmMOLi4rgXfY/hfcbx1/WbhKz9lhVbFmI2m9m46mtCT51zcq///8xmMyOHTiRg7QKMRgOBAets59GkmSP5oG0vZkyez/Q542jVrhlhN2/xyQcDuBt9lwmjZ7B642JiY2P5cdc+dnz3AyPHDyJjpoz07P8RPft/BIBf84+4dy/GyT0VeX4MVmsaK+XIMzO5vfzPKwllshV0dgipwvnoa84OIdXIli6js0NIFW7FRvzzSsL53zc5O4RUwzVbPoe+X64sbzjsvS6G/eKw9wINYYuIiIhIMmkIW0RERMQOnDE30VFUgRQRERGRZFEFUkRERMQO0vJlJqpAioiIiEiyKIEUERERkWTRELaIiIiIHaS1h148SBVIEREREUkWVSBFRERE7MCq2/iIiIiIiCRQBVJERETEDnQbHxERERGRRKpAioiIiNiBHmUoIiIiIpJIFUgRERERO9AcSBERERGRRKpAioiIiNiBnkQjIiIiIpJIFUgRERERO9AcSBERERGRRKpAioiIiNiB7gMpIiIiIpJICaSIiIiIJIuGsEVERETsQBfRiIiIiIgkUgVSRERExA50I3ERERERkUSqQIqIiIjYgVW38RERERERSaAKpIiIiIgdaA6kiIiIiEgiVSBFRERE7ED3gRQRERERSaQKpIiIiIgd6CpsEREREZFEqkCKiIiI2IHmQIqIiIiIJFIFUkRERMQOVIEUEREREUmkBFJEREREkkVD2CIiIiJ2kHYHsMFgTcsD9CIiIiLy3GkIW0RERESSRQmkiIiIiCSLEkgRERERSRYlkCIiIiKSLEogRURERCRZlECKiIiISLIogRQRERGRZFECKSIiIiLJoifRiNNFR0cTHh6OyWQiKCiI9957j5dfftnZYaVI169fJzw8HBcXF7744gv8/PwoUqSIs8NKkSIjI/nzzz/x8fHB3d3d2eGkKPv3739iW9myZR0YSep05coVcubM6ewwUpSgoKAntrVo0cKBkYijKIEUp+vXrx9NmjRh69atFChQgOHDh/Pll186O6wUaeDAgXz44YesWLGCWrVqMW7cOJYtW+bssFKcb775hnnz5hEfH0/t2rUxGAx8/PHHzg4rxVi5ciUAFy9eJC4ujjfeeIPffvsNDw8PnU9PsHTpUtKnT094eDjBwcFUqlSJwYMHOzusFOPGjRvODkEcTEPY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", 318 | "text/plain": [ 319 | "
" 320 | ] 321 | }, 322 | "metadata": {}, 323 | "output_type": "display_data" 324 | } 325 | ], 326 | "source": [ 327 | "## corr(): it gives the correlation between the featuers\n", 328 | "plt.figure(figsize=(10, 10))\n", 329 | "sns.heatmap(df.corr(), annot=True);" 330 | ] 331 | }, 332 | { 333 | "cell_type": "code", 334 | "execution_count": 43, 335 | "metadata": {}, 336 | "outputs": [ 337 | { 338 | "data": { 339 | "text/html": [ 340 | "
\n", 341 | "\n", 354 | "\n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | "
accountAgeDaysnumItemslocalTimepaymentMethodpaymentMethodAgeDayslabel
count39221.00000039221.00000039221.00000039221.00000039221.00000039221.000000
mean857.5639841.0847514.7482321.476811122.6413260.014278
std804.7882120.5668990.3893600.850805283.5691770.118636
min1.0000001.0000000.4212140.0000000.0000000.000000
25%72.0000001.0000004.7423031.0000000.0000000.000000
50%603.0000001.0000004.8866412.0000000.0125000.000000
75%1804.0000001.0000004.9620552.00000087.5104170.000000
max2000.00000029.0000005.0409292.0000001999.5805561.000000
\n", 441 | "
" 442 | ], 443 | "text/plain": [ 444 | " accountAgeDays numItems localTime paymentMethod \\\n", 445 | "count 39221.000000 39221.000000 39221.000000 39221.000000 \n", 446 | "mean 857.563984 1.084751 4.748232 1.476811 \n", 447 | "std 804.788212 0.566899 0.389360 0.850805 \n", 448 | "min 1.000000 1.000000 0.421214 0.000000 \n", 449 | "25% 72.000000 1.000000 4.742303 1.000000 \n", 450 | "50% 603.000000 1.000000 4.886641 2.000000 \n", 451 | "75% 1804.000000 1.000000 4.962055 2.000000 \n", 452 | "max 2000.000000 29.000000 5.040929 2.000000 \n", 453 | "\n", 454 | " paymentMethodAgeDays label \n", 455 | "count 39221.000000 39221.000000 \n", 456 | "mean 122.641326 0.014278 \n", 457 | "std 283.569177 0.118636 \n", 458 | "min 0.000000 0.000000 \n", 459 | "25% 0.000000 0.000000 \n", 460 | "50% 0.012500 0.000000 \n", 461 | "75% 87.510417 0.000000 \n", 462 | "max 1999.580556 1.000000 " 463 | ] 464 | }, 465 | "execution_count": 43, 466 | "metadata": {}, 467 | "output_type": "execute_result" 468 | } 469 | ], 470 | "source": [ 471 | "df.describe()" 472 | ] 473 | }, 474 | { 475 | "cell_type": "code", 476 | "execution_count": 44, 477 | "metadata": {}, 478 | "outputs": [], 479 | "source": [ 480 | "## independent and dependent features\n", 481 | "X = df.iloc[:, :-1].values\n", 482 | "y = df.iloc[:, -1].values" 483 | ] 484 | }, 485 | { 486 | "cell_type": "code", 487 | "execution_count": 45, 488 | "metadata": {}, 489 | "outputs": [], 490 | "source": [ 491 | "## scaling \n", 492 | "\n", 493 | "sc = StandardScaler()\n", 494 | "X = sc.fit_transform(X)" 495 | ] 496 | }, 497 | { 498 | "cell_type": "code", 499 | "execution_count": 46, 500 | "metadata": {}, 501 | "outputs": [], 502 | "source": [ 503 | "## train test split \n", 504 | "\n", 505 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)" 506 | ] 507 | }, 508 | { 509 | "cell_type": "code", 510 | "execution_count": 48, 511 | "metadata": {}, 512 | "outputs": [ 513 | { 514 | "name": "stdout", 515 | "output_type": "stream", 516 | "text": [ 517 | "X_train shape: (29415, 5)\n", 518 | "X_test shape: (9806, 5)\n", 519 | "y_train shape: (29415,)\n", 520 | "y_test shape: (9806,)\n" 521 | ] 522 | } 523 | ], 524 | "source": [ 525 | "print(\"X_train shape: \", X_train.shape)\n", 526 | "print(\"X_test shape: \", X_test.shape)\n", 527 | "print(\"y_train shape: \", y_train.shape)\n", 528 | "print(\"y_test shape: \", y_test.shape)" 529 | ] 530 | }, 531 | { 532 | "cell_type": "code", 533 | "execution_count": 49, 534 | "metadata": {}, 535 | "outputs": [ 536 | { 537 | "data": { 538 | "text/plain": [ 539 | "LogisticRegression()" 540 | ] 541 | }, 542 | "execution_count": 49, 543 | "metadata": {}, 544 | "output_type": "execute_result" 545 | } 546 | ], 547 | "source": [ 548 | "## logisticRegression Model\n", 549 | "lg = LogisticRegression()\n", 550 | "\n", 551 | "## training\n", 552 | "lg.fit(X_train, y_train)" 553 | ] 554 | }, 555 | { 556 | "cell_type": "code", 557 | "execution_count": 50, 558 | "metadata": {}, 559 | "outputs": [], 560 | "source": [ 561 | "## prediction \n", 562 | "pred = lg.predict(X_test)" 563 | ] 564 | }, 565 | { 566 | "cell_type": "code", 567 | "execution_count": null, 568 | "metadata": {}, 569 | "outputs": [], 570 | "source": [] 571 | }, 572 | { 573 | "cell_type": "code", 574 | "execution_count": null, 575 | "metadata": {}, 576 | "outputs": [], 577 | "source": [] 578 | } 579 | ], 580 | "metadata": { 581 | "kernelspec": { 582 | "display_name": "Python 3", 583 | "language": "python", 584 | "name": "python3" 585 | }, 586 | "language_info": { 587 | "codemirror_mode": { 588 | "name": "ipython", 589 | "version": 3 590 | }, 591 | "file_extension": ".py", 592 | "mimetype": "text/x-python", 593 | "name": "python", 594 | "nbconvert_exporter": "python", 595 | "pygments_lexer": "ipython3", 596 | "version": "3.8.5" 597 | } 598 | }, 599 | "nbformat": 4, 600 | "nbformat_minor": 4 601 | } 602 | --------------------------------------------------------------------------------