├── .DS_Store ├── KNN ├── .ipynb_checkpoints │ └── TheorySample-checkpoint.ipynb ├── Excercises │ ├── .ipynb_checkpoints │ │ ├── KNExercise-checkpoint.ipynb │ │ └── dataset-checkpoint.csv │ ├── KNExercise.ipynb │ └── dataset.csv └── TheorySample.ipynb ├── LogisticRegression ├── .DS_Store ├── .ipynb_checkpoints │ ├── 7_logistic_regression-checkpoint.ipynb │ ├── Exercise-checkpoint.ipynb │ ├── LogisticeRegression-checkpoint.ipynb │ └── insurance_data-checkpoint.csv ├── Exercise.ipynb ├── Exercise │ ├── .ipynb_checkpoints │ │ ├── 7_logistic_regression_exercise-checkpoint.ipynb │ │ └── HR_comma_sep-checkpoint.csv │ ├── 7_logistic_regression_exercise.ipynb │ └── HR_comma_sep.csv ├── LogisticeRegression.ipynb └── insurance_data.csv └── README.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/md-thayyib/DataScience-ML/174ef85031b5c97729404c86c6fdcf6d8f936b56/.DS_Store -------------------------------------------------------------------------------- /KNN/.ipynb_checkpoints/TheorySample-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 5 6 | } 7 | -------------------------------------------------------------------------------- /KNN/Excercises/.ipynb_checkpoints/KNExercise-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 5 6 | } 7 | -------------------------------------------------------------------------------- /KNN/Excercises/.ipynb_checkpoints/dataset-checkpoint.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/md-thayyib/DataScience-ML/174ef85031b5c97729404c86c6fdcf6d8f936b56/KNN/Excercises/.ipynb_checkpoints/dataset-checkpoint.csv -------------------------------------------------------------------------------- /KNN/TheorySample.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "1035894a-8de0-4ded-8565-f0b4520f0c27", 6 | "metadata": {}, 7 | "source": [ 8 | "# KNN\n", 9 | "\n", 10 | "KNN is one of the simplest alogorithm for both classification and regression. But it is mainly used for classification problem. The idea behing the KNN is to find the distance between the new data point and neighnour datas. We can set number of neigbour(k) and vote the nearest k neigbour in which the each data point belongs to class. The majority will win. So it is better to take k= odd number. There is no algo to choose the value of k. But choose k from 1 to n(say 40) and compare the errora and accuracy..\n", 11 | "\n", 12 | "There are 4 methods to calculate the distance\n", 13 | "1. Euclidian distance - Pythagorous distance - Like air distance\n", 14 | "2. Manhattan distance sum of absolute of distances (abs(x1-x2)+abs(y2-y1) \n", 15 | "The name Manhattan is an island in U.S. city distance. like car distance\n", 16 | "3. Minkowski - p=some values. If p=2 => Euclidian\n", 17 | "if p=1 => Manahatan, we can set another values\n", 18 | "4. Hamming distance - sum or avg of bit position at which the two code differs\n", 19 | "comes in one-hot encoding. 0 0 1 1\n", 20 | " 1 0 0 1 distance equals 2/4 = .5\n", 21 | " \n", 22 | "\"K-Nearest Neighbors is the supervised machine learning algorithm used for classification and regression. It manipulates the training data and classifies the new test data based on distance metrics. It finds the k-nearest neighbors to the test data, and then classification is performed by the majority of class labels.\n", 23 | "\n", 24 | "Selecting the optimal K value to achieve the maximum accuracy of the model is always challenging for a data scientist.\"\n", 25 | "\n", 26 | "\n", 27 | "### This algo is a lazy because it trains each time when it sees a sample\n", 28 | "\n", 29 | "## Here I am using iris data set" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 28, 35 | "id": "afebc598-aea6-4238-93f6-57fc6305813b", 36 | "metadata": {}, 37 | "outputs": [], 38 | "source": [ 39 | "import pandas as pd\n", 40 | "import seaborn as sns\n", 41 | "import matplotlib.pyplot as plt\n", 42 | "from sklearn.datasets import load_iris" 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 29, 48 | "id": "00d314e4-72a2-4381-bef5-499559d685c2", 49 | "metadata": {}, 50 | "outputs": [ 51 | { 52 | "data": { 53 | "text/plain": [ 54 | "['sepal length (cm)',\n", 55 | " 'sepal width (cm)',\n", 56 | " 'petal length (cm)',\n", 57 | " 'petal width (cm)']" 58 | ] 59 | }, 60 | "execution_count": 29, 61 | "metadata": {}, 62 | "output_type": "execute_result" 63 | } 64 | ], 65 | "source": [ 66 | "iris.feature_names" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 30, 72 | "id": "1791ce7e-768b-482e-b983-b88695d148f5", 73 | "metadata": {}, 74 | "outputs": [ 75 | { 76 | "data": { 77 | "text/plain": [ 78 | "array(['setosa', 'versicolor', 'virginica'], dtype='\n", 121 | "\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 | "
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)Species
05.13.51.40.20
14.93.01.40.20
24.73.21.30.20
34.63.11.50.20
45.03.61.40.20
\n", 188 | "" 189 | ], 190 | "text/plain": [ 191 | " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n", 192 | "0 5.1 3.5 1.4 0.2 \n", 193 | "1 4.9 3.0 1.4 0.2 \n", 194 | "2 4.7 3.2 1.3 0.2 \n", 195 | "3 4.6 3.1 1.5 0.2 \n", 196 | "4 5.0 3.6 1.4 0.2 \n", 197 | "\n", 198 | " Species \n", 199 | "0 0 \n", 200 | "1 0 \n", 201 | "2 0 \n", 202 | "3 0 \n", 203 | "4 0 " 204 | ] 205 | }, 206 | "execution_count": 33, 207 | "metadata": {}, 208 | "output_type": "execute_result" 209 | } 210 | ], 211 | "source": [ 212 | "df.head()" 213 | ] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "execution_count": 34, 218 | "id": "d6d918fe-0a10-4434-975a-d90e2845641f", 219 | "metadata": {}, 220 | "outputs": [ 221 | { 222 | "data": { 223 | "text/plain": [ 224 | "(150, 5)" 225 | ] 226 | }, 227 | "execution_count": 34, 228 | "metadata": {}, 229 | "output_type": "execute_result" 230 | } 231 | ], 232 | "source": [ 233 | "df.shape" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 35, 239 | "id": "70d0a5f7-7892-4e72-969b-9e0f959f49d2", 240 | "metadata": {}, 241 | "outputs": [ 242 | { 243 | "data": { 244 | "text/plain": [ 245 | "" 246 | ] 247 | }, 248 | "execution_count": 35, 249 | "metadata": {}, 250 | "output_type": "execute_result" 251 | }, 252 | { 253 | "data": { 254 | "image/png": "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\n", 255 | "text/plain": [ 256 | "
" 257 | ] 258 | }, 259 | "metadata": { 260 | "needs_background": "light" 261 | }, 262 | "output_type": "display_data" 263 | } 264 | ], 265 | "source": [ 266 | "sns.stripplot(x = 'petal length (cm)',y = 'sepal length (cm)',data=df,hue='Species')" 267 | ] 268 | }, 269 | { 270 | "cell_type": "markdown", 271 | "id": "d2b4f452-92f1-4827-aec7-4a5917950739", 272 | "metadata": {}, 273 | "source": [ 274 | "## Train test split" 275 | ] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "execution_count": 36, 280 | "id": "5dee6694-51e4-4e85-98f3-e76868b3ccc0", 281 | "metadata": {}, 282 | "outputs": [], 283 | "source": [ 284 | "X = df.drop('Species',axis=1)" 285 | ] 286 | }, 287 | { 288 | "cell_type": "code", 289 | "execution_count": 37, 290 | "id": "f7c720f3-614b-4a15-9418-c88068ed9b60", 291 | "metadata": {}, 292 | "outputs": [], 293 | "source": [ 294 | "y = df.Species" 295 | ] 296 | }, 297 | { 298 | "cell_type": "code", 299 | "execution_count": 38, 300 | "id": "46f601a4-38f2-4a6b-af0a-6441b8616c4c", 301 | "metadata": {}, 302 | "outputs": [], 303 | "source": [ 304 | "from sklearn.model_selection import train_test_split\n", 305 | "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=.3)" 306 | ] 307 | }, 308 | { 309 | "cell_type": "markdown", 310 | "id": "09792034-450d-405f-9c37-a6b6d62fe9b4", 311 | "metadata": {}, 312 | "source": [ 313 | "## Create KNN model" 314 | ] 315 | }, 316 | { 317 | "cell_type": "code", 318 | "execution_count": 39, 319 | "id": "a1ee0268-b025-4099-a4f7-e5dc3fbaa80b", 320 | "metadata": {}, 321 | "outputs": [], 322 | "source": [ 323 | "from sklearn.neighbors import KNeighborsClassifier" 324 | ] 325 | }, 326 | { 327 | "cell_type": "code", 328 | "execution_count": 64, 329 | "id": "ea20c832-80ba-460e-8df4-1b39f3974a30", 330 | "metadata": {}, 331 | "outputs": [], 332 | "source": [ 333 | "model = KNeighborsClassifier(n_neighbors=5,metric='minkowski',p=2,)" 334 | ] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "execution_count": 65, 339 | "id": "46ba1653-536d-436c-be54-07c5c8363190", 340 | "metadata": {}, 341 | "outputs": [ 342 | { 343 | "data": { 344 | "text/plain": [ 345 | "KNeighborsClassifier()" 346 | ] 347 | }, 348 | "execution_count": 65, 349 | "metadata": {}, 350 | "output_type": "execute_result" 351 | } 352 | ], 353 | "source": [ 354 | "model.fit(X_train,y_train)" 355 | ] 356 | }, 357 | { 358 | "cell_type": "markdown", 359 | "id": "93fc9293-30ed-4427-9900-671729820c8b", 360 | "metadata": {}, 361 | "source": [ 362 | "### Score" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": 66, 368 | "id": "3f91a26e-f4e0-4c6b-b136-dd7cbf7b74ff", 369 | "metadata": {}, 370 | "outputs": [ 371 | { 372 | "data": { 373 | "text/plain": [ 374 | "0.9333333333333333" 375 | ] 376 | }, 377 | "execution_count": 66, 378 | "metadata": {}, 379 | "output_type": "execute_result" 380 | } 381 | ], 382 | "source": [ 383 | "model.score(X_test,y_test)" 384 | ] 385 | }, 386 | { 387 | "cell_type": "code", 388 | "execution_count": 80, 389 | "id": "f7af8ca0-b959-4364-9ad9-52ee2891aec4", 390 | "metadata": {}, 391 | "outputs": [ 392 | { 393 | "data": { 394 | "text/plain": [ 395 | "{'algorithm': 'auto',\n", 396 | " 'leaf_size': 30,\n", 397 | " 'metric': 'minkowski',\n", 398 | " 'metric_params': None,\n", 399 | " 'n_jobs': None,\n", 400 | " 'n_neighbors': 5,\n", 401 | " 'p': 2,\n", 402 | " 'weights': 'uniform'}" 403 | ] 404 | }, 405 | "execution_count": 80, 406 | "metadata": {}, 407 | "output_type": "execute_result" 408 | } 409 | ], 410 | "source": [ 411 | "model.get_params()" 412 | ] 413 | }, 414 | { 415 | "cell_type": "code", 416 | "execution_count": null, 417 | "id": "4c31a01e-8b97-4a63-9828-afa975401d88", 418 | "metadata": {}, 419 | "outputs": [], 420 | "source": [] 421 | }, 422 | { 423 | "cell_type": "code", 424 | "execution_count": null, 425 | "id": "9c6cb8a3-5e57-4d7c-82a6-6256dadb58d3", 426 | "metadata": {}, 427 | "outputs": [], 428 | "source": [] 429 | } 430 | ], 431 | "metadata": { 432 | "kernelspec": { 433 | "display_name": "Python 3 (ipykernel)", 434 | "language": "python", 435 | "name": "python3" 436 | }, 437 | "language_info": { 438 | "codemirror_mode": { 439 | "name": "ipython", 440 | "version": 3 441 | }, 442 | "file_extension": ".py", 443 | "mimetype": "text/x-python", 444 | "name": "python", 445 | "nbconvert_exporter": "python", 446 | "pygments_lexer": "ipython3", 447 | "version": "3.9.12" 448 | } 449 | }, 450 | "nbformat": 4, 451 | "nbformat_minor": 5 452 | } 453 | -------------------------------------------------------------------------------- /LogisticRegression/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/md-thayyib/DataScience-ML/174ef85031b5c97729404c86c6fdcf6d8f936b56/LogisticRegression/.DS_Store -------------------------------------------------------------------------------- /LogisticRegression/.ipynb_checkpoints/7_logistic_regression-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "

Predicting if a person would buy life insurnace based on his age using logistic regression

" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "Above is a binary logistic regression problem as there are only two possible outcomes (i.e. if person buys insurance or he/she doesn't). " 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 15, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "import pandas as pd\n", 24 | "from matplotlib import pyplot as plt\n", 25 | "%matplotlib inline" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 16, 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/html": [ 36 | "
\n", 37 | "\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 | "
agebought_insurance
0220
1250
2471
3520
4461
\n", 86 | "
" 87 | ], 88 | "text/plain": [ 89 | " age bought_insurance\n", 90 | "0 22 0\n", 91 | "1 25 0\n", 92 | "2 47 1\n", 93 | "3 52 0\n", 94 | "4 46 1" 95 | ] 96 | }, 97 | "execution_count": 16, 98 | "metadata": {}, 99 | "output_type": "execute_result" 100 | } 101 | ], 102 | "source": [ 103 | "df = pd.read_csv(\"insurance_data.csv\")\n", 104 | "df.head()" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 17, 110 | "metadata": {}, 111 | "outputs": [ 112 | { 113 | "data": { 114 | "text/plain": [ 115 | "" 116 | ] 117 | }, 118 | "execution_count": 17, 119 | "metadata": {}, 120 | "output_type": "execute_result" 121 | }, 122 | { 123 | "data": { 124 | "image/png": "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\n", 125 | "text/plain": [ 126 | "
" 127 | ] 128 | }, 129 | "metadata": { 130 | "needs_background": "light" 131 | }, 132 | "output_type": "display_data" 133 | } 134 | ], 135 | "source": [ 136 | "plt.scatter(df.age,df.bought_insurance,marker='+',color='red')" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 18, 142 | "metadata": {}, 143 | "outputs": [], 144 | "source": [ 145 | "from sklearn.model_selection import train_test_split" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": 29, 151 | "metadata": {}, 152 | "outputs": [], 153 | "source": [ 154 | "X_train, X_test, y_train, y_test = train_test_split(df[['age']],df.bought_insurance,train_size=0.8)" 155 | ] 156 | }, 157 | { 158 | "cell_type": "code", 159 | "execution_count": 30, 160 | "metadata": {}, 161 | "outputs": [ 162 | { 163 | "data": { 164 | "text/html": [ 165 | "
\n", 166 | "\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 | "
age
446
862
2623
1758
2450
2554
\n", 213 | "
" 214 | ], 215 | "text/plain": [ 216 | " age\n", 217 | "4 46\n", 218 | "8 62\n", 219 | "26 23\n", 220 | "17 58\n", 221 | "24 50\n", 222 | "25 54" 223 | ] 224 | }, 225 | "execution_count": 30, 226 | "metadata": {}, 227 | "output_type": "execute_result" 228 | } 229 | ], 230 | "source": [ 231 | "X_test" 232 | ] 233 | }, 234 | { 235 | "cell_type": "code", 236 | "execution_count": 31, 237 | "metadata": {}, 238 | "outputs": [], 239 | "source": [ 240 | "from sklearn.linear_model import LogisticRegression\n", 241 | "model = LogisticRegression()" 242 | ] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "execution_count": 66, 247 | "metadata": { 248 | "scrolled": true 249 | }, 250 | "outputs": [ 251 | { 252 | "name": "stderr", 253 | "output_type": "stream", 254 | "text": [ 255 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", 256 | " FutureWarning)\n" 257 | ] 258 | }, 259 | { 260 | "data": { 261 | "text/plain": [ 262 | "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", 263 | " intercept_scaling=1, max_iter=100, multi_class='warn',\n", 264 | " n_jobs=None, penalty='l2', random_state=None, solver='warn',\n", 265 | " tol=0.0001, verbose=0, warm_start=False)" 266 | ] 267 | }, 268 | "execution_count": 66, 269 | "metadata": {}, 270 | "output_type": "execute_result" 271 | } 272 | ], 273 | "source": [ 274 | "model.fit(X_train, y_train)" 275 | ] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "execution_count": 9, 280 | "metadata": {}, 281 | "outputs": [ 282 | { 283 | "data": { 284 | "text/html": [ 285 | "
\n", 286 | "\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 | "
age
1625
2126
247
\n", 321 | "
" 322 | ], 323 | "text/plain": [ 324 | " age\n", 325 | "16 25\n", 326 | "21 26\n", 327 | "2 47" 328 | ] 329 | }, 330 | "execution_count": 9, 331 | "metadata": {}, 332 | "output_type": "execute_result" 333 | } 334 | ], 335 | "source": [ 336 | "X_test" 337 | ] 338 | }, 339 | { 340 | "cell_type": "code", 341 | "execution_count": 39, 342 | "metadata": {}, 343 | "outputs": [], 344 | "source": [ 345 | "y_predicted = model.predict(X_test)" 346 | ] 347 | }, 348 | { 349 | "cell_type": "code", 350 | "execution_count": 33, 351 | "metadata": {}, 352 | "outputs": [ 353 | { 354 | "data": { 355 | "text/plain": [ 356 | "array([[0.40569485, 0.59430515],\n", 357 | " [0.26002994, 0.73997006],\n", 358 | " [0.63939494, 0.36060506],\n", 359 | " [0.29321765, 0.70678235],\n", 360 | " [0.36637568, 0.63362432],\n", 361 | " [0.32875922, 0.67124078]])" 362 | ] 363 | }, 364 | "execution_count": 33, 365 | "metadata": {}, 366 | "output_type": "execute_result" 367 | } 368 | ], 369 | "source": [ 370 | "model.predict_proba(X_test)" 371 | ] 372 | }, 373 | { 374 | "cell_type": "code", 375 | "execution_count": 34, 376 | "metadata": { 377 | "scrolled": true 378 | }, 379 | "outputs": [ 380 | { 381 | "data": { 382 | "text/plain": [ 383 | "1.0" 384 | ] 385 | }, 386 | "execution_count": 34, 387 | "metadata": {}, 388 | "output_type": "execute_result" 389 | } 390 | ], 391 | "source": [ 392 | "model.score(X_test,y_test)" 393 | ] 394 | }, 395 | { 396 | "cell_type": "code", 397 | "execution_count": 40, 398 | "metadata": {}, 399 | "outputs": [ 400 | { 401 | "data": { 402 | "text/plain": [ 403 | "array([1, 1, 0, 1, 1, 1], dtype=int64)" 404 | ] 405 | }, 406 | "execution_count": 40, 407 | "metadata": {}, 408 | "output_type": "execute_result" 409 | } 410 | ], 411 | "source": [ 412 | "y_predicted" 413 | ] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": 37, 418 | "metadata": { 419 | "scrolled": true 420 | }, 421 | "outputs": [ 422 | { 423 | "data": { 424 | "text/html": [ 425 | "
\n", 426 | "\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 | "
age
446
862
2623
1758
2450
2554
\n", 473 | "
" 474 | ], 475 | "text/plain": [ 476 | " age\n", 477 | "4 46\n", 478 | "8 62\n", 479 | "26 23\n", 480 | "17 58\n", 481 | "24 50\n", 482 | "25 54" 483 | ] 484 | }, 485 | "execution_count": 37, 486 | "metadata": {}, 487 | "output_type": "execute_result" 488 | } 489 | ], 490 | "source": [ 491 | "X_test" 492 | ] 493 | }, 494 | { 495 | "cell_type": "markdown", 496 | "metadata": {}, 497 | "source": [ 498 | "**model.coef_ indicates value of m in y=m*x + b equation**" 499 | ] 500 | }, 501 | { 502 | "cell_type": "code", 503 | "execution_count": 67, 504 | "metadata": { 505 | "scrolled": true 506 | }, 507 | "outputs": [ 508 | { 509 | "data": { 510 | "text/plain": [ 511 | "array([[0.04150133]])" 512 | ] 513 | }, 514 | "execution_count": 67, 515 | "metadata": {}, 516 | "output_type": "execute_result" 517 | } 518 | ], 519 | "source": [ 520 | "model.coef_" 521 | ] 522 | }, 523 | { 524 | "cell_type": "markdown", 525 | "metadata": {}, 526 | "source": [ 527 | "**model.intercept_ indicates value of b in y=m*x + b equation**" 528 | ] 529 | }, 530 | { 531 | "cell_type": "code", 532 | "execution_count": 68, 533 | "metadata": { 534 | "scrolled": true 535 | }, 536 | "outputs": [ 537 | { 538 | "data": { 539 | "text/plain": [ 540 | "array([-1.52726963])" 541 | ] 542 | }, 543 | "execution_count": 68, 544 | "metadata": {}, 545 | "output_type": "execute_result" 546 | } 547 | ], 548 | "source": [ 549 | "model.intercept_" 550 | ] 551 | }, 552 | { 553 | "cell_type": "markdown", 554 | "metadata": {}, 555 | "source": [ 556 | "**Lets defined sigmoid function now and do the math with hand**" 557 | ] 558 | }, 559 | { 560 | "cell_type": "code", 561 | "execution_count": 43, 562 | "metadata": {}, 563 | "outputs": [], 564 | "source": [ 565 | "import math\n", 566 | "def sigmoid(x):\n", 567 | " return 1 / (1 + math.exp(-x))" 568 | ] 569 | }, 570 | { 571 | "cell_type": "code", 572 | "execution_count": 75, 573 | "metadata": {}, 574 | "outputs": [], 575 | "source": [ 576 | "def prediction_function(age):\n", 577 | " z = 0.042 * age - 1.53 # 0.04150133 ~ 0.042 and -1.52726963 ~ -1.53\n", 578 | " y = sigmoid(z)\n", 579 | " return y" 580 | ] 581 | }, 582 | { 583 | "cell_type": "code", 584 | "execution_count": 76, 585 | "metadata": {}, 586 | "outputs": [ 587 | { 588 | "data": { 589 | "text/plain": [ 590 | "0.4850044983805899" 591 | ] 592 | }, 593 | "execution_count": 76, 594 | "metadata": {}, 595 | "output_type": "execute_result" 596 | } 597 | ], 598 | "source": [ 599 | "age = 35\n", 600 | "prediction_function(age)" 601 | ] 602 | }, 603 | { 604 | "cell_type": "markdown", 605 | "metadata": {}, 606 | "source": [ 607 | "**0.485 is less than 0.5 which means person with 35 age will *not* buy insurance**" 608 | ] 609 | }, 610 | { 611 | "cell_type": "code", 612 | "execution_count": 77, 613 | "metadata": { 614 | "scrolled": true 615 | }, 616 | "outputs": [ 617 | { 618 | "data": { 619 | "text/plain": [ 620 | "0.568565299077705" 621 | ] 622 | }, 623 | "execution_count": 77, 624 | "metadata": {}, 625 | "output_type": "execute_result" 626 | } 627 | ], 628 | "source": [ 629 | "age = 43\n", 630 | "prediction_function(age)" 631 | ] 632 | }, 633 | { 634 | "cell_type": "markdown", 635 | "metadata": {}, 636 | "source": [ 637 | "**0.485 is more than 0.5 which means person with 43 will buy the insurance**" 638 | ] 639 | }, 640 | { 641 | "cell_type": "markdown", 642 | "metadata": {}, 643 | "source": [ 644 | "

Exercise

\n", 645 | "\n", 646 | "Download employee retention dataset from here: https://www.kaggle.com/giripujar/hr-analytics. \n", 647 | "1. Now do some exploratory data analysis to figure out which variables have direct and clear impact on employee retention (i.e. whether they leave the company or continue to work)\n", 648 | "2. Plot bar charts showing impact of employee salaries on retention\n", 649 | "3. Plot bar charts showing corelation between department and employee retention\n", 650 | "4. Now build logistic regression model using variables that were narrowed down in step 1\n", 651 | "5. Measure the accuracy of the model" 652 | ] 653 | } 654 | ], 655 | "metadata": { 656 | "kernelspec": { 657 | "display_name": "Python 3", 658 | "language": "python", 659 | "name": "python3" 660 | }, 661 | "language_info": { 662 | "codemirror_mode": { 663 | "name": "ipython", 664 | "version": 3 665 | }, 666 | "file_extension": ".py", 667 | "mimetype": "text/x-python", 668 | "name": "python", 669 | "nbconvert_exporter": "python", 670 | "pygments_lexer": "ipython3", 671 | "version": "3.7.3" 672 | } 673 | }, 674 | "nbformat": 4, 675 | "nbformat_minor": 2 676 | } 677 | -------------------------------------------------------------------------------- /LogisticRegression/.ipynb_checkpoints/Exercise-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 5 6 | } 7 | -------------------------------------------------------------------------------- /LogisticRegression/.ipynb_checkpoints/LogisticeRegression-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 5 6 | } 7 | -------------------------------------------------------------------------------- /LogisticRegression/.ipynb_checkpoints/insurance_data-checkpoint.csv: -------------------------------------------------------------------------------- 1 | age,bought_insurance 2 | 22,0 3 | 25,0 4 | 47,1 5 | 52,0 6 | 46,1 7 | 56,1 8 | 55,0 9 | 60,1 10 | 62,1 11 | 61,1 12 | 18,0 13 | 28,0 14 | 27,0 15 | 29,0 16 | 49,1 17 | 55,1 18 | 25,1 19 | 58,1 20 | 19,0 21 | 18,0 22 | 21,0 23 | 26,0 24 | 40,1 25 | 45,1 26 | 50,1 27 | 54,1 28 | 23,0 -------------------------------------------------------------------------------- /LogisticRegression/Exercise/.ipynb_checkpoints/7_logistic_regression_exercise-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "Dataset is downloaded from Kaggle. Link: https://www.kaggle.com/giripujar/hr-analytics" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 13, 13 | "metadata": { 14 | "collapsed": true 15 | }, 16 | "outputs": [], 17 | "source": [ 18 | "import pandas as pd\n", 19 | "from matplotlib import pyplot as plt\n", 20 | "%matplotlib inline" 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 | " \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 | "
satisfaction_levellast_evaluationnumber_projectaverage_montly_hourstime_spend_companyWork_accidentleftpromotion_last_5yearsDepartmentsalary
00.380.5321573010saleslow
10.800.8652626010salesmedium
20.110.8872724010salesmedium
30.720.8752235010saleslow
40.370.5221593010saleslow
\n", 129 | "
" 130 | ], 131 | "text/plain": [ 132 | " satisfaction_level last_evaluation number_project average_montly_hours \\\n", 133 | "0 0.38 0.53 2 157 \n", 134 | "1 0.80 0.86 5 262 \n", 135 | "2 0.11 0.88 7 272 \n", 136 | "3 0.72 0.87 5 223 \n", 137 | "4 0.37 0.52 2 159 \n", 138 | "\n", 139 | " time_spend_company Work_accident left promotion_last_5years Department \\\n", 140 | "0 3 0 1 0 sales \n", 141 | "1 6 0 1 0 sales \n", 142 | "2 4 0 1 0 sales \n", 143 | "3 5 0 1 0 sales \n", 144 | "4 3 0 1 0 sales \n", 145 | "\n", 146 | " salary \n", 147 | "0 low \n", 148 | "1 medium \n", 149 | "2 medium \n", 150 | "3 low \n", 151 | "4 low " 152 | ] 153 | }, 154 | "execution_count": 3, 155 | "metadata": {}, 156 | "output_type": "execute_result" 157 | } 158 | ], 159 | "source": [ 160 | "df = pd.read_csv(\"HR_comma_sep.csv\")\n", 161 | "df.head()" 162 | ] 163 | }, 164 | { 165 | "cell_type": "markdown", 166 | "metadata": {}, 167 | "source": [ 168 | "

Data exploration and visualization

" 169 | ] 170 | }, 171 | { 172 | "cell_type": "code", 173 | "execution_count": 73, 174 | "metadata": {}, 175 | "outputs": [ 176 | { 177 | "data": { 178 | "text/plain": [ 179 | "(3571, 10)" 180 | ] 181 | }, 182 | "execution_count": 73, 183 | "metadata": {}, 184 | "output_type": "execute_result" 185 | } 186 | ], 187 | "source": [ 188 | "left = df[df.left==1]\n", 189 | "left.shape" 190 | ] 191 | }, 192 | { 193 | "cell_type": "code", 194 | "execution_count": 74, 195 | "metadata": {}, 196 | "outputs": [ 197 | { 198 | "data": { 199 | "text/plain": [ 200 | "(11428, 10)" 201 | ] 202 | }, 203 | "execution_count": 74, 204 | "metadata": {}, 205 | "output_type": "execute_result" 206 | } 207 | ], 208 | "source": [ 209 | "retained = df[df.left==0]\n", 210 | "retained.shape" 211 | ] 212 | }, 213 | { 214 | "cell_type": "markdown", 215 | "metadata": {}, 216 | "source": [ 217 | "**Average numbers for all columns** " 218 | ] 219 | }, 220 | { 221 | "cell_type": "code", 222 | "execution_count": 31, 223 | "metadata": { 224 | "scrolled": false 225 | }, 226 | "outputs": [ 227 | { 228 | "data": { 229 | "text/html": [ 230 | "
\n", 231 | "\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 | "
satisfaction_levellast_evaluationnumber_projectaverage_montly_hourstime_spend_companyWork_accidentpromotion_last_5years
left
00.6668100.7154733.786664199.0602033.3800320.1750090.026251
10.4400980.7181133.855503207.4192103.8765050.0473260.005321
\n", 290 | "
" 291 | ], 292 | "text/plain": [ 293 | " satisfaction_level last_evaluation number_project \\\n", 294 | "left \n", 295 | "0 0.666810 0.715473 3.786664 \n", 296 | "1 0.440098 0.718113 3.855503 \n", 297 | "\n", 298 | " average_montly_hours time_spend_company Work_accident \\\n", 299 | "left \n", 300 | "0 199.060203 3.380032 0.175009 \n", 301 | "1 207.419210 3.876505 0.047326 \n", 302 | "\n", 303 | " promotion_last_5years \n", 304 | "left \n", 305 | "0 0.026251 \n", 306 | "1 0.005321 " 307 | ] 308 | }, 309 | "execution_count": 31, 310 | "metadata": {}, 311 | "output_type": "execute_result" 312 | } 313 | ], 314 | "source": [ 315 | "df.groupby('left').mean()" 316 | ] 317 | }, 318 | { 319 | "cell_type": "markdown", 320 | "metadata": {}, 321 | "source": [ 322 | "From above table we can draw following conclusions,\n", 323 | "
    \n", 324 | "
  1. **Satisfaction Level**: Satisfaction level seems to be relatively low (0.44) in employees leaving the firm vs the retained ones (0.66)
  2. \n", 325 | "
  3. **Average Monthly Hours**: Average monthly hours are higher in employees leaving the firm (199 vs 207)
  4. \n", 326 | "
  5. **Promotion Last 5 Years**: Employees who are given promotion are likely to be retained at firm
  6. \n", 327 | "
" 328 | ] 329 | }, 330 | { 331 | "cell_type": "markdown", 332 | "metadata": {}, 333 | "source": [ 334 | "**Impact of salary on employee retention**" 335 | ] 336 | }, 337 | { 338 | "cell_type": "code", 339 | "execution_count": 37, 340 | "metadata": { 341 | "scrolled": true 342 | }, 343 | "outputs": [ 344 | { 345 | "data": { 346 | "text/plain": [ 347 | "" 348 | ] 349 | }, 350 | "execution_count": 37, 351 | "metadata": {}, 352 | "output_type": "execute_result" 353 | }, 354 | { 355 | "data": { 356 | "image/png": "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\nSUVORK5CYII=\n", 357 | "text/plain": [ 358 | "" 359 | ] 360 | }, 361 | "metadata": {}, 362 | "output_type": "display_data" 363 | } 364 | ], 365 | "source": [ 366 | "pd.crosstab(df.salary,df.left).plot(kind='bar')" 367 | ] 368 | }, 369 | { 370 | "cell_type": "markdown", 371 | "metadata": {}, 372 | "source": [ 373 | "Above bar chart shows employees with high salaries are likely to not leave the company" 374 | ] 375 | }, 376 | { 377 | "cell_type": "markdown", 378 | "metadata": {}, 379 | "source": [ 380 | "**Department wise employee retention rate**" 381 | ] 382 | }, 383 | { 384 | "cell_type": "code", 385 | "execution_count": 38, 386 | "metadata": { 387 | "scrolled": true 388 | }, 389 | "outputs": [ 390 | { 391 | "data": { 392 | "text/plain": [ 393 | "" 394 | ] 395 | }, 396 | "execution_count": 38, 397 | "metadata": {}, 398 | "output_type": "execute_result" 399 | }, 400 | { 401 | "data": { 402 | "image/png": "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\ngg==\n", 403 | "text/plain": [ 404 | "" 405 | ] 406 | }, 407 | "metadata": {}, 408 | "output_type": "display_data" 409 | } 410 | ], 411 | "source": [ 412 | "pd.crosstab(df.Department,df.left).plot(kind='bar')" 413 | ] 414 | }, 415 | { 416 | "cell_type": "markdown", 417 | "metadata": {}, 418 | "source": [ 419 | "From above chart there seem to be some impact of department on employee retention but it is not major hence we will ignore department in our analysis" 420 | ] 421 | }, 422 | { 423 | "cell_type": "markdown", 424 | "metadata": {}, 425 | "source": [ 426 | "

From the data analysis so far we can conclude that we will use following variables as independant variables in our model

\n", 427 | "
    \n", 428 | "
  1. **Satisfaction Level**
  2. \n", 429 | "
  3. **Average Monthly Hours**
  4. \n", 430 | "
  5. **Promotion Last 5 Years**
  6. \n", 431 | "
  7. **Salary**
  8. \n", 432 | "
" 433 | ] 434 | }, 435 | { 436 | "cell_type": "code", 437 | "execution_count": 76, 438 | "metadata": {}, 439 | "outputs": [ 440 | { 441 | "data": { 442 | "text/html": [ 443 | "
\n", 444 | "\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 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalary
00.381570low
10.802620medium
20.112720medium
30.722230low
40.371590low
\n", 505 | "
" 506 | ], 507 | "text/plain": [ 508 | " satisfaction_level average_montly_hours promotion_last_5years salary\n", 509 | "0 0.38 157 0 low\n", 510 | "1 0.80 262 0 medium\n", 511 | "2 0.11 272 0 medium\n", 512 | "3 0.72 223 0 low\n", 513 | "4 0.37 159 0 low" 514 | ] 515 | }, 516 | "execution_count": 76, 517 | "metadata": {}, 518 | "output_type": "execute_result" 519 | } 520 | ], 521 | "source": [ 522 | "subdf = df[['satisfaction_level','average_montly_hours','promotion_last_5years','salary']]\n", 523 | "subdf.head()" 524 | ] 525 | }, 526 | { 527 | "cell_type": "markdown", 528 | "metadata": {}, 529 | "source": [ 530 | "**Tackle salary dummy variable**" 531 | ] 532 | }, 533 | { 534 | "cell_type": "markdown", 535 | "metadata": {}, 536 | "source": [ 537 | "Salary has all text data. It needs to be converted to numbers and we will use dummy variable for that. Check my one hot encoding tutorial to understand purpose behind dummy variables." 538 | ] 539 | }, 540 | { 541 | "cell_type": "code", 542 | "execution_count": 78, 543 | "metadata": {}, 544 | "outputs": [], 545 | "source": [ 546 | "salary_dummies = pd.get_dummies(subdf.salary, prefix=\"salary\")" 547 | ] 548 | }, 549 | { 550 | "cell_type": "code", 551 | "execution_count": 79, 552 | "metadata": {}, 553 | "outputs": [], 554 | "source": [ 555 | "df_with_dummies = pd.concat([subdf,salary_dummies],axis='columns')" 556 | ] 557 | }, 558 | { 559 | "cell_type": "code", 560 | "execution_count": 80, 561 | "metadata": {}, 562 | "outputs": [ 563 | { 564 | "data": { 565 | "text/html": [ 566 | "
\n", 567 | "\n", 580 | "\n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalarysalary_highsalary_lowsalary_medium
00.381570low010
10.802620medium001
20.112720medium001
30.722230low010
40.371590low010
\n", 646 | "
" 647 | ], 648 | "text/plain": [ 649 | " satisfaction_level average_montly_hours promotion_last_5years salary \\\n", 650 | "0 0.38 157 0 low \n", 651 | "1 0.80 262 0 medium \n", 652 | "2 0.11 272 0 medium \n", 653 | "3 0.72 223 0 low \n", 654 | "4 0.37 159 0 low \n", 655 | "\n", 656 | " salary_high salary_low salary_medium \n", 657 | "0 0 1 0 \n", 658 | "1 0 0 1 \n", 659 | "2 0 0 1 \n", 660 | "3 0 1 0 \n", 661 | "4 0 1 0 " 662 | ] 663 | }, 664 | "execution_count": 80, 665 | "metadata": {}, 666 | "output_type": "execute_result" 667 | } 668 | ], 669 | "source": [ 670 | "df_with_dummies.head()" 671 | ] 672 | }, 673 | { 674 | "cell_type": "markdown", 675 | "metadata": {}, 676 | "source": [ 677 | "Now we need to remove salary column which is text data. It is already replaced by dummy variables so we can safely remove it" 678 | ] 679 | }, 680 | { 681 | "cell_type": "code", 682 | "execution_count": 81, 683 | "metadata": {}, 684 | "outputs": [ 685 | { 686 | "data": { 687 | "text/html": [ 688 | "
\n", 689 | "\n", 702 | "\n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalary_highsalary_lowsalary_medium
00.381570010
10.802620001
20.112720001
30.722230010
40.371590010
\n", 762 | "
" 763 | ], 764 | "text/plain": [ 765 | " satisfaction_level average_montly_hours promotion_last_5years \\\n", 766 | "0 0.38 157 0 \n", 767 | "1 0.80 262 0 \n", 768 | "2 0.11 272 0 \n", 769 | "3 0.72 223 0 \n", 770 | "4 0.37 159 0 \n", 771 | "\n", 772 | " salary_high salary_low salary_medium \n", 773 | "0 0 1 0 \n", 774 | "1 0 0 1 \n", 775 | "2 0 0 1 \n", 776 | "3 0 1 0 \n", 777 | "4 0 1 0 " 778 | ] 779 | }, 780 | "execution_count": 81, 781 | "metadata": {}, 782 | "output_type": "execute_result" 783 | } 784 | ], 785 | "source": [ 786 | "df_with_dummies.drop('salary',axis='columns',inplace=True)\n", 787 | "df_with_dummies.head()" 788 | ] 789 | }, 790 | { 791 | "cell_type": "code", 792 | "execution_count": 82, 793 | "metadata": {}, 794 | "outputs": [ 795 | { 796 | "data": { 797 | "text/html": [ 798 | "
\n", 799 | "\n", 812 | "\n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \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 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalary_highsalary_lowsalary_medium
00.381570010
10.802620001
20.112720001
30.722230010
40.371590010
\n", 872 | "
" 873 | ], 874 | "text/plain": [ 875 | " satisfaction_level average_montly_hours promotion_last_5years \\\n", 876 | "0 0.38 157 0 \n", 877 | "1 0.80 262 0 \n", 878 | "2 0.11 272 0 \n", 879 | "3 0.72 223 0 \n", 880 | "4 0.37 159 0 \n", 881 | "\n", 882 | " salary_high salary_low salary_medium \n", 883 | "0 0 1 0 \n", 884 | "1 0 0 1 \n", 885 | "2 0 0 1 \n", 886 | "3 0 1 0 \n", 887 | "4 0 1 0 " 888 | ] 889 | }, 890 | "execution_count": 82, 891 | "metadata": {}, 892 | "output_type": "execute_result" 893 | } 894 | ], 895 | "source": [ 896 | "X = df_with_dummies\n", 897 | "X.head()" 898 | ] 899 | }, 900 | { 901 | "cell_type": "code", 902 | "execution_count": 83, 903 | "metadata": {}, 904 | "outputs": [], 905 | "source": [ 906 | "y = df.left" 907 | ] 908 | }, 909 | { 910 | "cell_type": "code", 911 | "execution_count": 91, 912 | "metadata": {}, 913 | "outputs": [], 914 | "source": [ 915 | "from sklearn.model_selection import train_test_split\n", 916 | "X_train, X_test, y_train, y_test = train_test_split(X,y,train_size=0.3)" 917 | ] 918 | }, 919 | { 920 | "cell_type": "code", 921 | "execution_count": 87, 922 | "metadata": {}, 923 | "outputs": [], 924 | "source": [ 925 | "from sklearn.linear_model import LogisticRegression\n", 926 | "model = LogisticRegression()" 927 | ] 928 | }, 929 | { 930 | "cell_type": "code", 931 | "execution_count": 88, 932 | "metadata": {}, 933 | "outputs": [ 934 | { 935 | "data": { 936 | "text/plain": [ 937 | "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", 938 | " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n", 939 | " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", 940 | " verbose=0, warm_start=False)" 941 | ] 942 | }, 943 | "execution_count": 88, 944 | "metadata": {}, 945 | "output_type": "execute_result" 946 | } 947 | ], 948 | "source": [ 949 | "model.fit(X_train, y_train)" 950 | ] 951 | }, 952 | { 953 | "cell_type": "code", 954 | "execution_count": 89, 955 | "metadata": {}, 956 | "outputs": [ 957 | { 958 | "data": { 959 | "text/plain": [ 960 | "array([0, 0, 0, ..., 0, 0, 1], dtype=int64)" 961 | ] 962 | }, 963 | "execution_count": 89, 964 | "metadata": {}, 965 | "output_type": "execute_result" 966 | } 967 | ], 968 | "source": [ 969 | "model.predict(X_test)" 970 | ] 971 | }, 972 | { 973 | "cell_type": "markdown", 974 | "metadata": {}, 975 | "source": [ 976 | "**Accuracy of the model**" 977 | ] 978 | }, 979 | { 980 | "cell_type": "code", 981 | "execution_count": 90, 982 | "metadata": {}, 983 | "outputs": [ 984 | { 985 | "data": { 986 | "text/plain": [ 987 | "0.78428571428571425" 988 | ] 989 | }, 990 | "execution_count": 90, 991 | "metadata": {}, 992 | "output_type": "execute_result" 993 | } 994 | ], 995 | "source": [ 996 | "model.score(X_test,y_test)" 997 | ] 998 | } 999 | ], 1000 | "metadata": { 1001 | "kernelspec": { 1002 | "display_name": "Python 3", 1003 | "language": "python", 1004 | "name": "python3" 1005 | }, 1006 | "language_info": { 1007 | "codemirror_mode": { 1008 | "name": "ipython", 1009 | "version": 3 1010 | }, 1011 | "file_extension": ".py", 1012 | "mimetype": "text/x-python", 1013 | "name": "python", 1014 | "nbconvert_exporter": "python", 1015 | "pygments_lexer": "ipython3", 1016 | "version": "3.7.3" 1017 | } 1018 | }, 1019 | "nbformat": 4, 1020 | "nbformat_minor": 2 1021 | } 1022 | -------------------------------------------------------------------------------- /LogisticRegression/Exercise/7_logistic_regression_exercise.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "Dataset is downloaded from Kaggle. Link: https://www.kaggle.com/giripujar/hr-analytics" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 13, 13 | "metadata": { 14 | "collapsed": true, 15 | "jupyter": { 16 | "outputs_hidden": true 17 | } 18 | }, 19 | "outputs": [], 20 | "source": [ 21 | "import pandas as pd\n", 22 | "from matplotlib import pyplot as plt\n", 23 | "%matplotlib inline" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 3, 29 | "metadata": {}, 30 | "outputs": [ 31 | { 32 | "data": { 33 | "text/html": [ 34 | "
\n", 35 | "\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 | " \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 | "
satisfaction_levellast_evaluationnumber_projectaverage_montly_hourstime_spend_companyWork_accidentleftpromotion_last_5yearsDepartmentsalary
00.380.5321573010saleslow
10.800.8652626010salesmedium
20.110.8872724010salesmedium
30.720.8752235010saleslow
40.370.5221593010saleslow
\n", 132 | "
" 133 | ], 134 | "text/plain": [ 135 | " satisfaction_level last_evaluation number_project average_montly_hours \\\n", 136 | "0 0.38 0.53 2 157 \n", 137 | "1 0.80 0.86 5 262 \n", 138 | "2 0.11 0.88 7 272 \n", 139 | "3 0.72 0.87 5 223 \n", 140 | "4 0.37 0.52 2 159 \n", 141 | "\n", 142 | " time_spend_company Work_accident left promotion_last_5years Department \\\n", 143 | "0 3 0 1 0 sales \n", 144 | "1 6 0 1 0 sales \n", 145 | "2 4 0 1 0 sales \n", 146 | "3 5 0 1 0 sales \n", 147 | "4 3 0 1 0 sales \n", 148 | "\n", 149 | " salary \n", 150 | "0 low \n", 151 | "1 medium \n", 152 | "2 medium \n", 153 | "3 low \n", 154 | "4 low " 155 | ] 156 | }, 157 | "execution_count": 3, 158 | "metadata": {}, 159 | "output_type": "execute_result" 160 | } 161 | ], 162 | "source": [ 163 | "df = pd.read_csv(\"HR_comma_sep.csv\")\n", 164 | "df.head()" 165 | ] 166 | }, 167 | { 168 | "cell_type": "markdown", 169 | "metadata": {}, 170 | "source": [ 171 | "

Data exploration and visualization

" 172 | ] 173 | }, 174 | { 175 | "cell_type": "code", 176 | "execution_count": 73, 177 | "metadata": {}, 178 | "outputs": [ 179 | { 180 | "data": { 181 | "text/plain": [ 182 | "(3571, 10)" 183 | ] 184 | }, 185 | "execution_count": 73, 186 | "metadata": {}, 187 | "output_type": "execute_result" 188 | } 189 | ], 190 | "source": [ 191 | "left = df[df.left==1]\n", 192 | "left.shape" 193 | ] 194 | }, 195 | { 196 | "cell_type": "code", 197 | "execution_count": 74, 198 | "metadata": {}, 199 | "outputs": [ 200 | { 201 | "data": { 202 | "text/plain": [ 203 | "(11428, 10)" 204 | ] 205 | }, 206 | "execution_count": 74, 207 | "metadata": {}, 208 | "output_type": "execute_result" 209 | } 210 | ], 211 | "source": [ 212 | "retained = df[df.left==0]\n", 213 | "retained.shape" 214 | ] 215 | }, 216 | { 217 | "cell_type": "markdown", 218 | "metadata": {}, 219 | "source": [ 220 | "**Average numbers for all columns** " 221 | ] 222 | }, 223 | { 224 | "cell_type": "code", 225 | "execution_count": 31, 226 | "metadata": {}, 227 | "outputs": [ 228 | { 229 | "data": { 230 | "text/html": [ 231 | "
\n", 232 | "\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 | "
satisfaction_levellast_evaluationnumber_projectaverage_montly_hourstime_spend_companyWork_accidentpromotion_last_5years
left
00.6668100.7154733.786664199.0602033.3800320.1750090.026251
10.4400980.7181133.855503207.4192103.8765050.0473260.005321
\n", 291 | "
" 292 | ], 293 | "text/plain": [ 294 | " satisfaction_level last_evaluation number_project \\\n", 295 | "left \n", 296 | "0 0.666810 0.715473 3.786664 \n", 297 | "1 0.440098 0.718113 3.855503 \n", 298 | "\n", 299 | " average_montly_hours time_spend_company Work_accident \\\n", 300 | "left \n", 301 | "0 199.060203 3.380032 0.175009 \n", 302 | "1 207.419210 3.876505 0.047326 \n", 303 | "\n", 304 | " promotion_last_5years \n", 305 | "left \n", 306 | "0 0.026251 \n", 307 | "1 0.005321 " 308 | ] 309 | }, 310 | "execution_count": 31, 311 | "metadata": {}, 312 | "output_type": "execute_result" 313 | } 314 | ], 315 | "source": [ 316 | "df.groupby('left').mean()" 317 | ] 318 | }, 319 | { 320 | "cell_type": "markdown", 321 | "metadata": {}, 322 | "source": [ 323 | "From above table we can draw following conclusions,\n", 324 | "
    \n", 325 | "
  1. **Satisfaction Level**: Satisfaction level seems to be relatively low (0.44) in employees leaving the firm vs the retained ones (0.66)
  2. \n", 326 | "
  3. **Average Monthly Hours**: Average monthly hours are higher in employees leaving the firm (199 vs 207)
  4. \n", 327 | "
  5. **Promotion Last 5 Years**: Employees who are given promotion are likely to be retained at firm
  6. \n", 328 | "
" 329 | ] 330 | }, 331 | { 332 | "cell_type": "markdown", 333 | "metadata": {}, 334 | "source": [ 335 | "**Impact of salary on employee retention**" 336 | ] 337 | }, 338 | { 339 | "cell_type": "code", 340 | "execution_count": 37, 341 | "metadata": { 342 | "scrolled": true 343 | }, 344 | "outputs": [ 345 | { 346 | "data": { 347 | "text/plain": [ 348 | "" 349 | ] 350 | }, 351 | "execution_count": 37, 352 | "metadata": {}, 353 | "output_type": "execute_result" 354 | }, 355 | { 356 | "data": { 357 | "image/png": "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\nSUVORK5CYII=\n", 358 | "text/plain": [ 359 | "" 360 | ] 361 | }, 362 | "metadata": {}, 363 | "output_type": "display_data" 364 | } 365 | ], 366 | "source": [ 367 | "pd.crosstab(df.salary,df.left).plot(kind='bar')" 368 | ] 369 | }, 370 | { 371 | "cell_type": "markdown", 372 | "metadata": {}, 373 | "source": [ 374 | "Above bar chart shows employees with high salaries are likely to not leave the company" 375 | ] 376 | }, 377 | { 378 | "cell_type": "markdown", 379 | "metadata": {}, 380 | "source": [ 381 | "**Department wise employee retention rate**" 382 | ] 383 | }, 384 | { 385 | "cell_type": "code", 386 | "execution_count": 38, 387 | "metadata": { 388 | "scrolled": true 389 | }, 390 | "outputs": [ 391 | { 392 | "data": { 393 | "text/plain": [ 394 | "" 395 | ] 396 | }, 397 | "execution_count": 38, 398 | "metadata": {}, 399 | "output_type": "execute_result" 400 | }, 401 | { 402 | "data": { 403 | "image/png": "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\ngg==\n", 404 | "text/plain": [ 405 | "" 406 | ] 407 | }, 408 | "metadata": {}, 409 | "output_type": "display_data" 410 | } 411 | ], 412 | "source": [ 413 | "pd.crosstab(df.Department,df.left).plot(kind='bar')" 414 | ] 415 | }, 416 | { 417 | "cell_type": "markdown", 418 | "metadata": {}, 419 | "source": [ 420 | "From above chart there seem to be some impact of department on employee retention but it is not major hence we will ignore department in our analysis" 421 | ] 422 | }, 423 | { 424 | "cell_type": "markdown", 425 | "metadata": {}, 426 | "source": [ 427 | "

From the data analysis so far we can conclude that we will use following variables as independant variables in our model

\n", 428 | "
    \n", 429 | "
  1. **Satisfaction Level**
  2. \n", 430 | "
  3. **Average Monthly Hours**
  4. \n", 431 | "
  5. **Promotion Last 5 Years**
  6. \n", 432 | "
  7. **Salary**
  8. \n", 433 | "
" 434 | ] 435 | }, 436 | { 437 | "cell_type": "code", 438 | "execution_count": 76, 439 | "metadata": {}, 440 | "outputs": [ 441 | { 442 | "data": { 443 | "text/html": [ 444 | "
\n", 445 | "\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 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalary
00.381570low
10.802620medium
20.112720medium
30.722230low
40.371590low
\n", 506 | "
" 507 | ], 508 | "text/plain": [ 509 | " satisfaction_level average_montly_hours promotion_last_5years salary\n", 510 | "0 0.38 157 0 low\n", 511 | "1 0.80 262 0 medium\n", 512 | "2 0.11 272 0 medium\n", 513 | "3 0.72 223 0 low\n", 514 | "4 0.37 159 0 low" 515 | ] 516 | }, 517 | "execution_count": 76, 518 | "metadata": {}, 519 | "output_type": "execute_result" 520 | } 521 | ], 522 | "source": [ 523 | "subdf = df[['satisfaction_level','average_montly_hours','promotion_last_5years','salary']]\n", 524 | "subdf.head()" 525 | ] 526 | }, 527 | { 528 | "cell_type": "markdown", 529 | "metadata": {}, 530 | "source": [ 531 | "**Tackle salary dummy variable**" 532 | ] 533 | }, 534 | { 535 | "cell_type": "markdown", 536 | "metadata": {}, 537 | "source": [ 538 | "Salary has all text data. It needs to be converted to numbers and we will use dummy variable for that. Check my one hot encoding tutorial to understand purpose behind dummy variables." 539 | ] 540 | }, 541 | { 542 | "cell_type": "code", 543 | "execution_count": 78, 544 | "metadata": {}, 545 | "outputs": [], 546 | "source": [ 547 | "salary_dummies = pd.get_dummies(subdf.salary, prefix=\"salary\")" 548 | ] 549 | }, 550 | { 551 | "cell_type": "code", 552 | "execution_count": 79, 553 | "metadata": {}, 554 | "outputs": [], 555 | "source": [ 556 | "df_with_dummies = pd.concat([subdf,salary_dummies],axis='columns')" 557 | ] 558 | }, 559 | { 560 | "cell_type": "code", 561 | "execution_count": 80, 562 | "metadata": {}, 563 | "outputs": [ 564 | { 565 | "data": { 566 | "text/html": [ 567 | "
\n", 568 | "\n", 581 | "\n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalarysalary_highsalary_lowsalary_medium
00.381570low010
10.802620medium001
20.112720medium001
30.722230low010
40.371590low010
\n", 647 | "
" 648 | ], 649 | "text/plain": [ 650 | " satisfaction_level average_montly_hours promotion_last_5years salary \\\n", 651 | "0 0.38 157 0 low \n", 652 | "1 0.80 262 0 medium \n", 653 | "2 0.11 272 0 medium \n", 654 | "3 0.72 223 0 low \n", 655 | "4 0.37 159 0 low \n", 656 | "\n", 657 | " salary_high salary_low salary_medium \n", 658 | "0 0 1 0 \n", 659 | "1 0 0 1 \n", 660 | "2 0 0 1 \n", 661 | "3 0 1 0 \n", 662 | "4 0 1 0 " 663 | ] 664 | }, 665 | "execution_count": 80, 666 | "metadata": {}, 667 | "output_type": "execute_result" 668 | } 669 | ], 670 | "source": [ 671 | "df_with_dummies.head()" 672 | ] 673 | }, 674 | { 675 | "cell_type": "markdown", 676 | "metadata": {}, 677 | "source": [ 678 | "Now we need to remove salary column which is text data. It is already replaced by dummy variables so we can safely remove it" 679 | ] 680 | }, 681 | { 682 | "cell_type": "code", 683 | "execution_count": 81, 684 | "metadata": {}, 685 | "outputs": [ 686 | { 687 | "data": { 688 | "text/html": [ 689 | "
\n", 690 | "\n", 703 | "\n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalary_highsalary_lowsalary_medium
00.381570010
10.802620001
20.112720001
30.722230010
40.371590010
\n", 763 | "
" 764 | ], 765 | "text/plain": [ 766 | " satisfaction_level average_montly_hours promotion_last_5years \\\n", 767 | "0 0.38 157 0 \n", 768 | "1 0.80 262 0 \n", 769 | "2 0.11 272 0 \n", 770 | "3 0.72 223 0 \n", 771 | "4 0.37 159 0 \n", 772 | "\n", 773 | " salary_high salary_low salary_medium \n", 774 | "0 0 1 0 \n", 775 | "1 0 0 1 \n", 776 | "2 0 0 1 \n", 777 | "3 0 1 0 \n", 778 | "4 0 1 0 " 779 | ] 780 | }, 781 | "execution_count": 81, 782 | "metadata": {}, 783 | "output_type": "execute_result" 784 | } 785 | ], 786 | "source": [ 787 | "df_with_dummies.drop('salary',axis='columns',inplace=True)\n", 788 | "df_with_dummies.head()" 789 | ] 790 | }, 791 | { 792 | "cell_type": "code", 793 | "execution_count": 82, 794 | "metadata": {}, 795 | "outputs": [ 796 | { 797 | "data": { 798 | "text/html": [ 799 | "
\n", 800 | "\n", 813 | "\n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \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 | "
satisfaction_levelaverage_montly_hourspromotion_last_5yearssalary_highsalary_lowsalary_medium
00.381570010
10.802620001
20.112720001
30.722230010
40.371590010
\n", 873 | "
" 874 | ], 875 | "text/plain": [ 876 | " satisfaction_level average_montly_hours promotion_last_5years \\\n", 877 | "0 0.38 157 0 \n", 878 | "1 0.80 262 0 \n", 879 | "2 0.11 272 0 \n", 880 | "3 0.72 223 0 \n", 881 | "4 0.37 159 0 \n", 882 | "\n", 883 | " salary_high salary_low salary_medium \n", 884 | "0 0 1 0 \n", 885 | "1 0 0 1 \n", 886 | "2 0 0 1 \n", 887 | "3 0 1 0 \n", 888 | "4 0 1 0 " 889 | ] 890 | }, 891 | "execution_count": 82, 892 | "metadata": {}, 893 | "output_type": "execute_result" 894 | } 895 | ], 896 | "source": [ 897 | "X = df_with_dummies\n", 898 | "X.head()" 899 | ] 900 | }, 901 | { 902 | "cell_type": "code", 903 | "execution_count": 83, 904 | "metadata": {}, 905 | "outputs": [], 906 | "source": [ 907 | "y = df.left" 908 | ] 909 | }, 910 | { 911 | "cell_type": "code", 912 | "execution_count": 91, 913 | "metadata": {}, 914 | "outputs": [], 915 | "source": [ 916 | "from sklearn.model_selection import train_test_split\n", 917 | "X_train, X_test, y_train, y_test = train_test_split(X,y,train_size=0.3)" 918 | ] 919 | }, 920 | { 921 | "cell_type": "code", 922 | "execution_count": 87, 923 | "metadata": {}, 924 | "outputs": [], 925 | "source": [ 926 | "from sklearn.linear_model import LogisticRegression\n", 927 | "model = LogisticRegression()" 928 | ] 929 | }, 930 | { 931 | "cell_type": "code", 932 | "execution_count": 88, 933 | "metadata": {}, 934 | "outputs": [ 935 | { 936 | "data": { 937 | "text/plain": [ 938 | "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", 939 | " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n", 940 | " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", 941 | " verbose=0, warm_start=False)" 942 | ] 943 | }, 944 | "execution_count": 88, 945 | "metadata": {}, 946 | "output_type": "execute_result" 947 | } 948 | ], 949 | "source": [ 950 | "model.fit(X_train, y_train)" 951 | ] 952 | }, 953 | { 954 | "cell_type": "code", 955 | "execution_count": 89, 956 | "metadata": {}, 957 | "outputs": [ 958 | { 959 | "data": { 960 | "text/plain": [ 961 | "array([0, 0, 0, ..., 0, 0, 1], dtype=int64)" 962 | ] 963 | }, 964 | "execution_count": 89, 965 | "metadata": {}, 966 | "output_type": "execute_result" 967 | } 968 | ], 969 | "source": [ 970 | "model.predict(X_test)" 971 | ] 972 | }, 973 | { 974 | "cell_type": "markdown", 975 | "metadata": {}, 976 | "source": [ 977 | "**Accuracy of the model**" 978 | ] 979 | }, 980 | { 981 | "cell_type": "code", 982 | "execution_count": 90, 983 | "metadata": {}, 984 | "outputs": [ 985 | { 986 | "data": { 987 | "text/plain": [ 988 | "0.78428571428571425" 989 | ] 990 | }, 991 | "execution_count": 90, 992 | "metadata": {}, 993 | "output_type": "execute_result" 994 | } 995 | ], 996 | "source": [ 997 | "model.score(X_test,y_test)" 998 | ] 999 | } 1000 | ], 1001 | "metadata": { 1002 | "kernelspec": { 1003 | "display_name": "Python 3 (ipykernel)", 1004 | "language": "python", 1005 | "name": "python3" 1006 | }, 1007 | "language_info": { 1008 | "codemirror_mode": { 1009 | "name": "ipython", 1010 | "version": 3 1011 | }, 1012 | "file_extension": ".py", 1013 | "mimetype": "text/x-python", 1014 | "name": "python", 1015 | "nbconvert_exporter": "python", 1016 | "pygments_lexer": "ipython3", 1017 | "version": "3.9.12" 1018 | } 1019 | }, 1020 | "nbformat": 4, 1021 | "nbformat_minor": 4 1022 | } 1023 | -------------------------------------------------------------------------------- /LogisticRegression/LogisticeRegression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "4198d27c-1b64-41a0-a45f-46349884e9fa", 6 | "metadata": {}, 7 | "source": [ 8 | "

Predicting if a person buy insurance or not

" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": 23, 14 | "id": "991790ec-201a-4ac6-811e-e03d6b1563d2", 15 | "metadata": {}, 16 | "outputs": [], 17 | "source": [ 18 | "# import all the libs\n", 19 | "import pandas as pd\n", 20 | "import numpy as np\n", 21 | "import seaborn as sns\n", 22 | "import matplotlib.pyplot as plt" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 24, 28 | "id": "efe9539f-e255-454c-9b64-bc8cc604512f", 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "insurance = pd.read_csv('insurance_data.csv')" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 25, 38 | "id": "55856df2-f456-423a-bc94-046aecfa63ce", 39 | "metadata": {}, 40 | "outputs": [], 41 | "source": [ 42 | "df = pd.DataFrame(insurance)" 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 26, 48 | "id": "b87436f2-4891-45d2-920b-08905c4a157f", 49 | "metadata": {}, 50 | "outputs": [ 51 | { 52 | "data": { 53 | "text/html": [ 54 | "
\n", 55 | "\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 | "
agebought_insurance
0220
1250
2471
3520
4461
\n", 104 | "
" 105 | ], 106 | "text/plain": [ 107 | " age bought_insurance\n", 108 | "0 22 0\n", 109 | "1 25 0\n", 110 | "2 47 1\n", 111 | "3 52 0\n", 112 | "4 46 1" 113 | ] 114 | }, 115 | "execution_count": 26, 116 | "metadata": {}, 117 | "output_type": "execute_result" 118 | } 119 | ], 120 | "source": [ 121 | "df.shape\n", 122 | "df.head()" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 36, 128 | "id": "a9f48eeb-e85c-4471-9962-a63170cb7e3e", 129 | "metadata": {}, 130 | "outputs": [ 131 | { 132 | "data": { 133 | "text/plain": [ 134 | "[]" 135 | ] 136 | }, 137 | "execution_count": 36, 138 | "metadata": {}, 139 | "output_type": "execute_result" 140 | }, 141 | { 142 | "data": { 143 | "image/png": "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\n", 144 | "text/plain": [ 145 | "
" 146 | ] 147 | }, 148 | "metadata": { 149 | "needs_background": "light" 150 | }, 151 | "output_type": "display_data" 152 | } 153 | ], 154 | "source": [ 155 | "plt.scatter(df.age,df.bought_insurance,marker=\"+\",color='red')\n", 156 | "from sklearn.linear_model import LinearRegression\n", 157 | "\n", 158 | "lreg=LinearRegression().fit(df[['age']],df.bought_insurance)\n", 159 | "y_pred = lreg.predict(df[['age']])\n", 160 | "plt.plot(df.age,y_pred)\n", 161 | "\n", 162 | "# The line show the linear regression \n", 163 | "# if an outlier is there this will make problem" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 37, 169 | "id": "02f54e10-f091-4be3-bc09-6e94df563249", 170 | "metadata": {}, 171 | "outputs": [ 172 | { 173 | "data": { 174 | "text/plain": [ 175 | "0.5364021643885126" 176 | ] 177 | }, 178 | "execution_count": 37, 179 | "metadata": {}, 180 | "output_type": "execute_result" 181 | } 182 | ], 183 | "source": [ 184 | "# score\n", 185 | "lreg.score(df[['age']],df.bought_insurance)" 186 | ] 187 | }, 188 | { 189 | "cell_type": "markdown", 190 | "id": "12633885-e051-4c9f-9cfd-fe853732b6f3", 191 | "metadata": {}, 192 | "source": [ 193 | "## sklearn logistice regression\n", 194 | "\n", 195 | "### Step 1: Split the dataset into train and test" 196 | ] 197 | }, 198 | { 199 | "cell_type": "code", 200 | "execution_count": 59, 201 | "id": "d867c81d-c0f1-44fc-bf5d-41498613af89", 202 | "metadata": {}, 203 | "outputs": [], 204 | "source": [ 205 | "from sklearn.model_selection import train_test_split\n", 206 | "X_train,X_test,y_train,y_test = train_test_split(df[['age']],df.bought_insurance,test_size=.2)" 207 | ] 208 | }, 209 | { 210 | "cell_type": "markdown", 211 | "id": "7f587acf-56eb-4e3e-8776-bfec932d98e1", 212 | "metadata": {}, 213 | "source": [ 214 | "### Step 2: Model creation" 215 | ] 216 | }, 217 | { 218 | "cell_type": "code", 219 | "execution_count": 60, 220 | "id": "8f282469-ebd1-47c2-add8-c5528a296cfb", 221 | "metadata": {}, 222 | "outputs": [], 223 | "source": [ 224 | "from sklearn.linear_model import LogisticRegression\n", 225 | "model = LogisticRegression()" 226 | ] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "execution_count": 61, 231 | "id": "79c48062-710b-45c6-b298-95929cb5b5a6", 232 | "metadata": {}, 233 | "outputs": [ 234 | { 235 | "data": { 236 | "text/plain": [ 237 | "LogisticRegression()" 238 | ] 239 | }, 240 | "execution_count": 61, 241 | "metadata": {}, 242 | "output_type": "execute_result" 243 | } 244 | ], 245 | "source": [ 246 | "# fit the model\n", 247 | "model.fit(X_train,y_train)" 248 | ] 249 | }, 250 | { 251 | "cell_type": "code", 252 | "execution_count": 62, 253 | "id": "ce799e97-6d9c-4343-bd28-61ee2672c101", 254 | "metadata": {}, 255 | "outputs": [], 256 | "source": [ 257 | "y_pred = model.predict(X_test)" 258 | ] 259 | }, 260 | { 261 | "cell_type": "code", 262 | "execution_count": 63, 263 | "id": "2599d297-9383-4994-8118-9e7b253d3dcc", 264 | "metadata": {}, 265 | "outputs": [ 266 | { 267 | "data": { 268 | "text/plain": [ 269 | "array([0, 1, 1, 1, 1, 1])" 270 | ] 271 | }, 272 | "execution_count": 63, 273 | "metadata": {}, 274 | "output_type": "execute_result" 275 | } 276 | ], 277 | "source": [ 278 | "y_pred" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 90, 284 | "id": "8dd3aa2b-459b-430a-9c62-0a55bf343993", 285 | "metadata": {}, 286 | "outputs": [ 287 | { 288 | "name": "stdout", 289 | "output_type": "stream", 290 | "text": [ 291 | "[[0.8925775 0.1074225 ]\n", 292 | " [0.10266326 0.89733674]\n", 293 | " [0.04501951 0.95498049]\n", 294 | " [0.02937193 0.97062807]\n", 295 | " [0.217319 0.782681 ]\n", 296 | " [0.0684156 0.9315844 ]]\n" 297 | ] 298 | } 299 | ], 300 | "source": [ 301 | "pd.options.display.float_format = '{:.2f}'.format \n", 302 | "np.set_printoptions(suppress=True)\n", 303 | "print(model.predict_proba(X_test))\n", 304 | "# the below shows the probability of 0 and then 1\n", 305 | "\n" 306 | ] 307 | }, 308 | { 309 | "cell_type": "code", 310 | "execution_count": 78, 311 | "id": "779bc740-e0f5-4768-b137-027c85fd9c60", 312 | "metadata": {}, 313 | "outputs": [ 314 | { 315 | "data": { 316 | "text/plain": [ 317 | "array([0.8925775 , 0.10266326, 0.04501951, 0.02937193, 0.217319 ,\n", 318 | " 0.0684156 ])" 319 | ] 320 | }, 321 | "execution_count": 78, 322 | "metadata": {}, 323 | "output_type": "execute_result" 324 | } 325 | ], 326 | "source": [] 327 | }, 328 | { 329 | "cell_type": "markdown", 330 | "id": "92bf3c64-795f-48a0-8269-68644690ad55", 331 | "metadata": {}, 332 | "source": [ 333 | "#### coefficiten (m)" 334 | ] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "execution_count": 65, 339 | "id": "85aa88e3-54a1-40ec-8586-346ada059764", 340 | "metadata": {}, 341 | "outputs": [ 342 | { 343 | "data": { 344 | "text/plain": [ 345 | "array([[0.14776968]])" 346 | ] 347 | }, 348 | "execution_count": 65, 349 | "metadata": {}, 350 | "output_type": "execute_result" 351 | } 352 | ], 353 | "source": [ 354 | "model.coef_" 355 | ] 356 | }, 357 | { 358 | "cell_type": "markdown", 359 | "id": "1d7284e5-f019-4179-bee0-92a8c4e5e800", 360 | "metadata": {}, 361 | "source": [ 362 | "#### Intercept (b)" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": 66, 368 | "id": "a94df50a-878a-4827-9416-25c64bd3231c", 369 | "metadata": {}, 370 | "outputs": [ 371 | { 372 | "data": { 373 | "text/plain": [ 374 | "array([-5.51604619])" 375 | ] 376 | }, 377 | "execution_count": 66, 378 | "metadata": {}, 379 | "output_type": "execute_result" 380 | } 381 | ], 382 | "source": [ 383 | "model.intercept_" 384 | ] 385 | }, 386 | { 387 | "cell_type": "markdown", 388 | "id": "fc41e137-0011-4c86-b465-2c0a2cc92642", 389 | "metadata": {}, 390 | "source": [ 391 | "#### Score" 392 | ] 393 | }, 394 | { 395 | "cell_type": "code", 396 | "execution_count": 67, 397 | "id": "a0784512-112f-489c-bf49-a4bf8712345d", 398 | "metadata": {}, 399 | "outputs": [ 400 | { 401 | "data": { 402 | "text/plain": [ 403 | "0.8333333333333334" 404 | ] 405 | }, 406 | "execution_count": 67, 407 | "metadata": {}, 408 | "output_type": "execute_result" 409 | } 410 | ], 411 | "source": [ 412 | "model.score(X_test,y_test)" 413 | ] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": 68, 418 | "id": "a83f5ebc-6a85-4c29-81bb-042a4d2c7186", 419 | "metadata": {}, 420 | "outputs": [ 421 | { 422 | "data": { 423 | "text/plain": [ 424 | "0.9047619047619048" 425 | ] 426 | }, 427 | "execution_count": 68, 428 | "metadata": {}, 429 | "output_type": "execute_result" 430 | } 431 | ], 432 | "source": [ 433 | "model.score(X_train,y_train)" 434 | ] 435 | }, 436 | { 437 | "cell_type": "markdown", 438 | "id": "b1d88203-cfc5-4276-afc6-2d21717dac71", 439 | "metadata": {}, 440 | "source": [ 441 | "#### Logistice regression plot" 442 | ] 443 | }, 444 | { 445 | "cell_type": "code", 446 | "execution_count": 75, 447 | "id": "6418ed1c-ceb8-4124-bd0b-ba18bd7aa69e", 448 | "metadata": {}, 449 | "outputs": [ 450 | { 451 | "name": "stderr", 452 | "output_type": "stream", 453 | "text": [ 454 | "/opt/anaconda3/envs/jenv/lib/python3.9/site-packages/seaborn/_decorators.py:36: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n", 455 | " warnings.warn(\n" 456 | ] 457 | }, 458 | { 459 | "data": { 460 | "text/plain": [ 461 | "" 462 | ] 463 | }, 464 | "execution_count": 75, 465 | "metadata": {}, 466 | "output_type": "execute_result" 467 | }, 468 | { 469 | "data": { 470 | "image/png": "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\n", 471 | "text/plain": [ 472 | "
" 473 | ] 474 | }, 475 | "metadata": { 476 | "needs_background": "light" 477 | }, 478 | "output_type": "display_data" 479 | } 480 | ], 481 | "source": [ 482 | "\n", 483 | "plt.scatter(df.age,df.bought_insurance)\n", 484 | "sns.lineplot(df.age,model.predict(df[['age']]))" 485 | ] 486 | }, 487 | { 488 | "cell_type": "markdown", 489 | "id": "4e8c78be-b39a-4a40-8186-c92ebe5b596e", 490 | "metadata": {}, 491 | "source": [ 492 | "#### Probability curve" 493 | ] 494 | }, 495 | { 496 | "cell_type": "code", 497 | "execution_count": 88, 498 | "id": "6e1fc4ed-2dcf-4a56-8c7b-6219990b8d44", 499 | "metadata": {}, 500 | "outputs": [ 501 | { 502 | "name": "stderr", 503 | "output_type": "stream", 504 | "text": [ 505 | "/opt/anaconda3/envs/jenv/lib/python3.9/site-packages/seaborn/_decorators.py:36: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n", 506 | " warnings.warn(\n" 507 | ] 508 | }, 509 | { 510 | "data": { 511 | "text/plain": [ 512 | "" 513 | ] 514 | }, 515 | "execution_count": 88, 516 | "metadata": {}, 517 | "output_type": "execute_result" 518 | }, 519 | { 520 | "data": { 521 | "image/png": "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\n", 522 | "text/plain": [ 523 | "
" 524 | ] 525 | }, 526 | "metadata": { 527 | "needs_background": "light" 528 | }, 529 | "output_type": "display_data" 530 | } 531 | ], 532 | "source": [ 533 | "plt.scatter(df.age,df.bought_insurance)\n", 534 | "# line plot will plot the line in ascending order of the points\n", 535 | "# lineplot age vs probability of 1\n", 536 | "sns.lineplot(df.age,model.predict_proba(df[['age']])[:,1])" 537 | ] 538 | }, 539 | { 540 | "cell_type": "markdown", 541 | "id": "4e968b38-792a-4037-80a2-f4c8223aa092", 542 | "metadata": {}, 543 | "source": [ 544 | "#### Define the fuction manually" 545 | ] 546 | }, 547 | { 548 | "cell_type": "code", 549 | "execution_count": 98, 550 | "id": "ec2b055a-4140-4a4d-bd03-b961466ee5b9", 551 | "metadata": {}, 552 | "outputs": [], 553 | "source": [ 554 | "import math\n", 555 | "def sigmoid(z):\n", 556 | " return (1/(1+math.exp(-z)))" 557 | ] 558 | }, 559 | { 560 | "cell_type": "code", 561 | "execution_count": 112, 562 | "id": "b9ad4eeb-82aa-4a86-9c0b-6d33f6ddcad0", 563 | "metadata": {}, 564 | "outputs": [], 565 | "source": [ 566 | "def predicts(age):\n", 567 | " z = age*0.14776968-5.51604619\n", 568 | " y =sigmoid(z)\n", 569 | " if y<=.5: return 0 \n", 570 | " else: return 1" 571 | ] 572 | }, 573 | { 574 | "cell_type": "code", 575 | "execution_count": 127, 576 | "id": "1d56fce8-9439-4f45-a31b-f630774d411e", 577 | "metadata": {}, 578 | "outputs": [ 579 | { 580 | "data": { 581 | "text/plain": [ 582 | "1" 583 | ] 584 | }, 585 | "execution_count": 127, 586 | "metadata": {}, 587 | "output_type": "execute_result" 588 | } 589 | ], 590 | "source": [ 591 | "\n", 592 | "predicts(37.5)" 593 | ] 594 | }, 595 | { 596 | "cell_type": "code", 597 | "execution_count": 126, 598 | "id": "00ce06ab-bdd5-4aae-b7d2-76c843d426c4", 599 | "metadata": {}, 600 | "outputs": [ 601 | { 602 | "name": "stderr", 603 | "output_type": "stream", 604 | "text": [ 605 | "/opt/anaconda3/envs/jenv/lib/python3.9/site-packages/sklearn/base.py:450: UserWarning: X does not have valid feature names, but LogisticRegression was fitted with feature names\n", 606 | " warnings.warn(\n" 607 | ] 608 | }, 609 | { 610 | "data": { 611 | "text/plain": [ 612 | "array([1])" 613 | ] 614 | }, 615 | "execution_count": 126, 616 | "metadata": {}, 617 | "output_type": "execute_result" 618 | } 619 | ], 620 | "source": [ 621 | "model.predict([[37.5]])" 622 | ] 623 | }, 624 | { 625 | "cell_type": "code", 626 | "execution_count": null, 627 | "id": "dc6f3bb2-eafb-49c9-b8c5-191f1e56413c", 628 | "metadata": {}, 629 | "outputs": [], 630 | "source": [] 631 | }, 632 | { 633 | "cell_type": "code", 634 | "execution_count": null, 635 | "id": "0a23e2a7-8c34-4f7a-8072-9d318a482ea7", 636 | "metadata": {}, 637 | "outputs": [], 638 | "source": [] 639 | } 640 | ], 641 | "metadata": { 642 | "kernelspec": { 643 | "display_name": "Python 3 (ipykernel)", 644 | "language": "python", 645 | "name": "python3" 646 | }, 647 | "language_info": { 648 | "codemirror_mode": { 649 | "name": "ipython", 650 | "version": 3 651 | }, 652 | "file_extension": ".py", 653 | "mimetype": "text/x-python", 654 | "name": "python", 655 | "nbconvert_exporter": "python", 656 | "pygments_lexer": "ipython3", 657 | "version": "3.9.12" 658 | } 659 | }, 660 | "nbformat": 4, 661 | "nbformat_minor": 5 662 | } 663 | -------------------------------------------------------------------------------- /LogisticRegression/insurance_data.csv: -------------------------------------------------------------------------------- 1 | age,bought_insurance 2 | 22,0 3 | 25,0 4 | 47,1 5 | 52,0 6 | 46,1 7 | 56,1 8 | 55,0 9 | 60,1 10 | 62,1 11 | 61,1 12 | 18,0 13 | 28,0 14 | 27,0 15 | 29,0 16 | 49,1 17 | 55,1 18 | 25,1 19 | 58,1 20 | 19,0 21 | 18,0 22 | 21,0 23 | 26,0 24 | 40,1 25 | 45,1 26 | 50,1 27 | 54,1 28 | 23,0 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DataScience-ML 2 | 3 | *Here I will upload my data science and machine learning journey* 4 | 5 | U can find the algoritms and some exercise on the respective folders 6 | --------------------------------------------------------------------------------