diff --git a/01 Start/linear regression demo.ipynb b/01 Start/linear regression demo.ipynb
deleted file mode 100644
index e034f2b..0000000
--- a/01 Start/linear regression demo.ipynb
+++ /dev/null
@@ -1,255 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Linear Regression\n",
- "---"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Step 1 : load the data using numpy\n",
- "import numpy as np\n",
- "in_data = np.loadtxt('data100m.csv',delimiter=',')\n",
- "\n",
- "# In CSV file first column contains year and second column winning time\n",
- "# Extract data accordingly\n",
- "x = in_data[:,0] # year\n",
- "t = in_data[:,1] # winning time"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Step 2: plot the data using Matplot library\n",
- "import pylab as plt\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0,0.5,'Winning time')"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "plt.plot(x,t,'ro')\n",
- "#label the axes to ease the identification of data points\n",
- "plt.xlabel('Olympic year')\n",
- "plt.ylabel('Winning time')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Step 3: compute the necessary values for w0 and w1\n",
- "xbar = x.mean()\n",
- "tbar = t.mean()\n",
- "xxbar = (x*x).mean()\n",
- "xtbar = (x*t).mean()\n",
- "\n",
- "w_1 = (xtbar - xbar*tbar)/(xxbar - xbar*xbar)\n",
- "w_0 = (t - w_1*x).mean()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[]"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "#Step 4: make the new plot\n",
- "plt.figure()\n",
- "plt.plot(x,t,'ro')\n",
- "plt.plot([x[0],x[-1]],[w_0 + w_1*x[0],w_0 + w_1*x[-1]],'b')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
- "source": [
- "Step 5: quadratic!\n",
- "Derivation is theoretically easy but a pain as it involves solving a system of three simultaneous equations (we'll see how to make it easy next time). Probably the easiest way to do it is through gaussian elimination of the following matrix system (see e.g. [https://www.math.hmc.edu/calculus/tutorials/linearsystems/]()). The matrix system is obtained by differentiating with respect to $w_0$, $w_1$ and $w_2$."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "$$ Aw = b $$\n",
- "\n",
- "where\n",
- "\n",
- "$$ A = \\left[ \\begin{array}{ccc} 1 & \\bar{x} & \\bar{x^2} \\\\\n",
- " \\bar{x} & \\bar{x^2} & \\bar{x^3} \\\\\n",
- " \\bar{x^2} & \\bar{x^3} & \\bar{x^4}\n",
- " \\end{array}\\right] $$\n",
- " \n",
- "$$ w = \\left[ \\begin{array}{c} w_0 \\\\ w_1 \\\\ w_2 \\end{array}\\right] $$\n",
- "\n",
- "and \n",
- "\n",
- "$$ b = \\left[ \\begin{array}{c} \\bar{t} \\\\ \\bar{xt} \\\\ \\bar{x^2t} \\end{array}\\right] $$\n",
- "\n",
- "and \n",
- "\n",
- "$$ \\bar{f} = \\frac{1}{N}\\sum_{n=1}^N f_n $$"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Add more parameters to see how it will affect the curve/ prediction of future value \n",
- "tbar = t.mean()\n",
- "xbar = x.mean()\n",
- "x2bar = (x*x).mean()\n",
- "x3bar = (x*x*x).mean()\n",
- "x4bar = (x*x*x*x).mean()\n",
- "x2tbar = (x*x*t).mean()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.000110151552656\n",
- "-0.443160488183\n",
- "455.597858393\n"
- ]
- }
- ],
- "source": [
- "#Computed w2, w1 and w0 using derived formula - (Using calculus) - (check the link mentioned above)\n",
- "num = x2tbar - x2bar*tbar - (x3bar-x2bar*xbar)*(xtbar-xbar*tbar)/(x2bar-xbar*xbar)\n",
- "den = x4bar - x2bar*x2bar - (x3bar-x2bar*xbar)*(x3bar-x2bar*xbar)/(x2bar-xbar*xbar)\n",
- "w_2 = num/den\n",
- "print w_2\n",
- "w_1 = (xtbar-xbar*tbar)/(x2bar-xbar*xbar) - w_3*(x3bar-xbar*x2bar)/(x2bar-xbar*xbar)\n",
- "print w_1\n",
- "w_0 = tbar - w_1*xbar - w_2*x2bar\n",
- "print w_0"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "#Make the new plot\n",
- "plt.figure()\n",
- "xvals = np.linspace(x[0],x[-1],100)\n",
- "tvals = w_0 + w_1*xvals + w_2*xvals**2\n",
- "plt.plot(x,t,'ro')\n",
- "plt.plot(xvals,tvals,'b')\n",
- "plt.xlabel('Olympic year')\n",
- "plt.ylabel('Winning time')"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.4"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 1
-}
diff --git a/01 Start/resources/a.png b/01 Start/resources/a.png
deleted file mode 100644
index 1c0fca6..0000000
Binary files a/01 Start/resources/a.png and /dev/null differ
diff --git a/BRAIN TUMOR DETECTION [END 2 END]/README.md b/BRAIN TUMOR DETECTION [END 2 END]/README.md
index a4a3514..d40ce1d 100644
--- a/BRAIN TUMOR DETECTION [END 2 END]/README.md
+++ b/BRAIN TUMOR DETECTION [END 2 END]/README.md
@@ -1,15 +1,126 @@
-# how to run this app.
-- clone the repo
-- move to folder BRAIN TUMOR DETECTION,
-- create a virtual env using `virtualenv 'envirnoment name'.`
-- Now type `. \Scripts\activate` to activate your virtualenv venv
-- install packages required by the app by running the command `pip install -r requirments.txt` if you found error of torch or torch-vision libraries so your can download it from below commands.
-for windows cpu torch library command with conda: conda install pytorch torchvision cpuonly -c pytorch
-for windows cpu torch library command with pip: pip install torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
+# Brain Tumor Detection (End-to-End)
-For Linux, Mac,CUDA version for windows and much more you can visit Link
-- now run the app using `flask run`.
-- if all things works fine so you can view running web application in your browser at port 5000.
+## Introduction
+This project is a **Flask web application** for detecting brain tumors from MRI images using a deep learning model built with **PyTorch**. Users can upload MRI images through the app, and the model will classify them as either tumor or non-tumor. The goal of this project is to provide an intuitive interface for medical professionals to quickly identify potential brain tumors.
-# Download the model file from [https://drive.google.com/file/d/1LJG_ITCWWtriLC5NPrWxIDwekWbhU_Rj/view?usp=sharing](https://drive.google.com/file/d/1LJG_ITCWWtriLC5NPrWxIDwekWbhU_Rj/view?usp=sharing) and add to model directory in order to run the project.
+### Dataset:
+- The dataset contains MRI images, divided into two categories: **tumor** and **non-tumor**.
+- Preprocessing techniques are applied to the dataset to ensure optimal model performance.
+
+## Project Overview
+
+This end-to-end project consists of:
+1. **Data Loading**: Load MRI images for training, validation, and testing.
+2. **Data Preprocessing**: Apply normalization, resizing, and augmentation techniques.
+3. **Model Building**: Build a Convolutional Neural Network (CNN) using **PyTorch** to classify the MRI images.
+4. **Model Training**: Train the model on GPU (if available) to detect brain tumors.
+5. **Flask Web Application**: Develop a Flask app for user interaction, allowing image uploads for tumor detection.
+6. **Model Deployment**: Deploy the trained model within the Flask app.
+7. **Prediction**: Provide real-time predictions through the Flask web app.
+
+## Model Download and Directory Structure
+
+### Pretrained Model:
+You can download the pretrained model from the following link:
+[Brain Tumor Detection Model](https://drive.google.com/file/d/1LJG_ITCWWtriLC5NPrWxIDwekWbhU_Rj/view?usp=sharing)
+
+### Directory Structure:
+```
+Brain-Tumor-Detection/
+│
+├── app/
+│ ├── static/ # CSS, JS, and images for the Flask web app
+│ ├── templates/ # HTML templates for the Flask app
+│ └── app.py # Main Flask application
+│
+├── model/
+│ └── brain_tumor_model.pth # Pretrained PyTorch model
+│
+├── data/
+│ ├── train/ # Training MRI images
+│ ├── test/ # Testing MRI images
+│
+├── src/
+│ ├── dataset.py # Script to load and preprocess the dataset
+│ ├── model.py # CNN model architecture using PyTorch
+│ └── train.py # Script to train the model
+│
+├── README.md # Project documentation
+└── requirements.txt # List of required Python packages
+```
+
+## Setup Instructions
+
+### Step 1: Create a Virtual Environment
+
+Create a virtual environment to isolate the dependencies for this project.
+
+```bash
+# For Windows
+python -m venv venv
+venv\Scripts\activate
+
+# For macOS/Linux
+python3 -m venv venv
+source venv/bin/activate
+```
+
+### Step 2: Install Required Libraries
+
+Install the dependencies listed in `requirements.txt`:
+
+```bash
+pip install -r requirements.txt
+```
+
+### Step 3: Download the Pretrained Model
+
+Download the pretrained model from [this link](https://drive.google.com/file/d/1LJG_ITCWWtriLC5NPrWxIDwekWbhU_Rj/view?usp=sharing) and place it in the `model/` directory as `brain_tumor_model.pth`.
+
+### Step 4: Running the Flask App
+
+To start the Flask web app, navigate to the `app/` directory and run the `app.py` file:
+
+```bash
+cd app/
+python app.py
+```
+
+The app will be hosted at `http://127.0.0.1:5000/`. You can open the URL in your browser and upload MRI images to receive predictions.
+
+## Flask Web Application Features
+
+- **Image Upload**: Users can upload MRI images through the web interface.
+- **Tumor Detection**: The uploaded image is fed into the model to predict whether a tumor is present.
+- **Result Display**: The result is displayed on the same page with either a "Tumor" or "Non-Tumor" label.
+
+## Model Architecture
+
+The model used in this project is a **Convolutional Neural Network (CNN)** built using **PyTorch**. The architecture has been optimized for image classification tasks and consists of several layers:
+
+### Key Layers:
+- **Convolutional Layers**: For feature extraction from MRI images.
+- **Max Pooling Layers**: For downsampling and reducing spatial dimensions.
+- **Fully Connected Layers**: For classification.
+- **Softmax Activation**: To produce the output probability of each class (Tumor/Non-Tumor).
+
+## Data Preprocessing
+
+To ensure the CNN model performs optimally, the following preprocessing steps are applied:
+- **Grayscale Conversion**: All MRI images are converted to grayscale.
+- **Resizing**: Images are resized to 64x64 pixels for uniformity.
+- **Normalization**: Each pixel value is normalized to a range of [0, 1].
+- **Data Augmentation**: Techniques like random rotation, flipping, and zooming are applied to expand the dataset and prevent overfitting.
+
+## Conclusion
+
+This Flask web app provides an end-to-end solution for detecting brain tumors using MRI images. With a simple user interface and a powerful backend, it can serve as a diagnostic tool for medical professionals. The project can be further enhanced by incorporating additional data, improving model accuracy, or deploying the app to a cloud platform like Heroku.
+
+## Future Enhancements
+
+- **Integration with Cloud Platforms**: Deploy the app on Heroku or AWS for wider accessibility.
+- **Mobile Application**: Develop a mobile app to upload MRI images and get predictions on the go.
+- **Transfer Learning**: Incorporate pre-trained models like ResNet to further improve accuracy.
+
+---
\ No newline at end of file
diff --git a/Classification of Arrhythmia [ECG DATA]/README.md b/Classification of Arrhythmia [ECG DATA]/README.md
index 1ae2b59..0ef6abb 100644
--- a/Classification of Arrhythmia [ECG DATA]/README.md
+++ b/Classification of Arrhythmia [ECG DATA]/README.md
@@ -1,38 +1,70 @@
# Project-Arrhythmia
+## Introduction
+This project focuses on predicting and classifying arrhythmias using various machine learning algorithms. The dataset used for this project is from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/Arrhythmia), which consists of 452 examples across 16 different classes. Among these, 245 examples are labeled as "normal," while the remaining represent 12 different types of arrhythmias, including "coronary artery disease" and "right bundle branch block."
-### Introduction
+### Dataset Overview:
+- **Number of Examples**: 452
+- **Number of Features**: 279 (including age, sex, weight, height, and various medical parameters)
+- **Classes**: 16 total (12 arrhythmia types + 1 normal group)
-The Dataset used in this project is available on the UCI machine learning Repository.
-It can be found at: [https://archive.ics.uci.edu/ml/datasets/Arrhythmia](https://archive.ics.uci.edu/ml/datasets/Arrhythmia).
- * It consists of 452 different examples spread over 16 classes. Of the 452 examples,245 are of "normal" people.
- * We also have 12 different types of arrhythmias. Among all these types of arrhythmias, the most representative are the "coronary artery disease" and "Rjgbt boundle branch block".
- * We have 279 features, which include age, sex, weight, height of patients and other related information.
- * We explicitly observe that the number of features is relatively high compared to the number of examples we are available.
- * Our goal was to predict if a person is suffering from arrhythmia or not, and if yes, classify it in to one of 12 available groups.
+**Objective**:
+The goal of this project is to predict whether a person is suffering from arrhythmia, and if so, classify the type of arrhythmia into one of the 12 available groups.
+## Algorithms Used
+To address the classification task, the following machine learning algorithms were employed:
+1. **K-Nearest Neighbors (KNN) Classifier**
+2. **Logistic Regression**
+3. **Decision Tree Classifier**
+4. **Linear Support Vector Classifier (SVC)**
+5. **Kernelized Support Vector Classifier (SVC)**
+6. **Random Forest Classifier**
+7. **Principal Component Analysis (PCA)** (for dimensionality reduction)
-### Algorithms Used
-1. KNN Classifier
-2. Logestic Regression
-3. Decision Tree Classifier
-4. Linear SVC
-5. Kernelized SVC
-6. Random Forest Classifier
-7. Principal Component analysis (PCA)
+## Project Workflow
-### Result
+### Step 1: Data Exploration
+- Analyzed the 279 features to identify patterns and correlations that could help with prediction.
+- Addressed the challenge of the high number of features compared to the limited number of examples by employing PCA.
-![](https://raw.githubusercontent.com/shsarv/Project-Arrhythmia/master/Image/result.png)
-
+### Step 2: Data Preprocessing
+- Handled missing values, standardized data, and prepared it for machine learning models.
+- Applied **Principal Component Analysis (PCA)** to reduce the feature space and eliminate collinearity, improving both execution time and model performance.
+
+### Step 3: Model Training and Evaluation
+- Trained various machine learning algorithms on the dataset.
+- Evaluated model performance using accuracy, recall, and other relevant metrics.
+
+### Step 4: Model Tuning with PCA
+- PCA helped reduce the complexity of the dataset, leading to improved model accuracy and reduced overfitting.
+- After applying PCA, models were retrained, and significant improvements were observed.
+
+## Results
+
+![Results](https://raw.githubusercontent.com/shsarv/Project-Arrhythmia/master/Image/result.png)
### Conclusion
-The models started performing better after we applied PCA on the resampled data. The reason behind this is, PCA reduces the complexity of the data. It creates components based on giving importance to variables with large variance and also the components which it creates are non collinear in nature which means it takes care of collinearity in large data set. PCA also improves the overall execution time and quality of the models and it is very beneficial when we are working with huge amount of variables.
+Applying **Principal Component Analysis (PCA)** to the resampled data significantly improved the performance of the models. PCA works by creating non-collinear components that prioritize variables with high variance, thus reducing dimensionality and collinearity, which are key issues in large datasets. PCA not only enhanced the overall execution time but also improved the quality of predictions.
+
+- The **best-performing model** in terms of recall score is the **Kernelized Support Vector Machine (SVM)** with PCA, achieving an accuracy of **80.21%**.
+
+## Future Work
+
+- Experiment with more advanced models like **XGBoost** or **Neural Networks**.
+- Perform hyperparameter tuning to further improve model accuracy and recall.
+- Explore feature selection techniques alongside PCA to refine the feature set.
+
+
+## Acknowledgments
-**The Best model in term of recall score is Kernalized SVM with PCA having accuracy of 80.21%.**
+- [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/Arrhythmia)
+- [Scikit-learn Documentation](https://scikit-learn.org/stable/)
+- [PCA Concepts](https://towardsdatascience.com/pca-using-python-scikit-learn-e653f8989e60)
+---
+This `README.md` offers clear documentation of the objectives, algorithms used, results, and the significance of PCA in your project. It also provides essential information on how to run the project and the prerequisites.
\ No newline at end of file
diff --git a/Colorize Black & white images [OPEN CV]/README.md b/Colorize Black & white images [OPEN CV]/README.md
index dfe28ea..986ad44 100644
--- a/Colorize Black & white images [OPEN CV]/README.md
+++ b/Colorize Black & white images [OPEN CV]/README.md
@@ -383,15 +383,4 @@ root.mainloop()
-
-
-
-
-## Summary:
-
-This Notebook build a deep learning project to colorize black and white
-images. It first introduces us to Lab color space and why it is
-favorable for our problem statement. Then step by step it describes how
-to implement black and white image colorizer.
-
-
+
\ No newline at end of file
diff --git a/Diabetes Prediction [END 2 END]/New Doc 2020-06-09 15.19.25_1.pdf b/Diabetes Prediction [END 2 END]/New Doc 2020-06-09 15.19.25_1.pdf
deleted file mode 100644
index aac7420..0000000
Binary files a/Diabetes Prediction [END 2 END]/New Doc 2020-06-09 15.19.25_1.pdf and /dev/null differ
diff --git a/Diabetes Prediction [END 2 END]/README.md b/Diabetes Prediction [END 2 END]/README.md
index 43546f0..03cb057 100644
--- a/Diabetes Prediction [END 2 END]/README.md
+++ b/Diabetes Prediction [END 2 END]/README.md
@@ -1,81 +1,114 @@
-## Diabetes Prediction using Machine Learning.
+# Diabetes Prediction
+
+This repository contains an end-to-end machine learning project aimed at predicting the likelihood of diabetes based on user-provided health data. The project demonstrates the full machine learning pipeline from data gathering to model deployment using a Flask web application hosted on Heroku.
+
+## Project Overview
+
+The goal of this project is to create a seamless process for predicting diabetes by building a machine learning model that analyzes various health parameters. The web application takes user input, processes the data through the model, and provides the prediction result on a new page.
+
+## Project Objectives
+The project follows these key steps:
+
+1. **Data Gathering**: Collected relevant medical data from various sources, including public datasets.
+2. **Descriptive Analysis**: Explored the dataset to understand the underlying patterns and trends.
+3. **Data Visualizations**: Created insightful visualizations to represent key relationships in the data.
+4. **Data Preprocessing**: Cleaned and transformed the data for use in the machine learning model.
+5. **Data Modelling**: Trained a machine learning model using scikit-learn to predict diabetes.
+6. **Model Evaluation**: Assessed the model's performance using various metrics to ensure accuracy.
+7. **Model Deployment**: Deployed the model as a web application using Flask, hosted on Heroku.
-### Table of Content
- * [Overview](#overview)
- * [Motivation](#motivation)
- * [Demo](#demo)
- * [Learning Objective](#Learning-Objective)
- * [Technical Aspect](#technical-aspect)
- * [Technologies Used](#technologies-used)
- * [To Do](#to-do)
- * [Installation](#installation)
- * [Run](#run)
- * [Bug / Feature Request](#bug-feature-request)
- * [Team](#team)
- * [License](#license)
- * [Credits](#credits)
+## Technical Aspects
+### Machine Learning Model
+- **Library**: scikit-learn
+- **Algorithms Used**: Logistic Regression, Decision Trees, Random Forests (or any chosen algorithms based on your project)
+- **Input Features**: The following fields are taken from the user:
+ - Number of Pregnancies
+ - Insulin Level
+ - Age
+ - Body Mass Index (BMI)
+ - Blood Pressure
+ - Glucose Level
+ - Skin Thickness
+ - Diabetes Pedigree Function
+- **Output**: The model predicts whether the person is likely to have diabetes (Yes/No).
-### Overview
-In this project, the objective is to predict whether the person has Diabetes or not based on various features like Number of Pregnancies, Insulin Level, Age, BMI.The data set that has used in this project has taken from the [kaggle](https://www.kaggle.com/) . "This dataset is originally from the National Institute of Diabetes and Digestive and Kidney Diseases. The objective of the dataset is to diagnostically predict whether or not a patient has diabetes, based on certain diagnostic measurements included in the dataset. Several constraints were placed on the selection of these instances from a larger database. In particular, all patients here are females at least 21 years old of Pima Indian heritage." and used a simple [random forest classifier](https://en.wikipedia.org/wiki/Random_forest).
+### Web Application
+- **Framework**: Flask
+- **Deployment**: Hosted on Heroku for easy access.
+- **Functionality**:
+ - The user provides health-related data via a form.
+ - After submitting the form, the model processes the data and presents the prediction on a new page.
+
+## How to Use
-![live](https://github.com/shsarv/Diabetes-prediction/blob/master/Resource/live1.gif)
+### Prerequisites
+- Python 3.x
+- Flask
+- scikit-learn
+- Pandas
+- Heroku CLI (for deployment)
+### Installation
-### Motivation
-The motivation was to experiment with end to end machine learning project and get some idea about deployment platform like [Heroku]() and offcourse this "
-Diabetes is an increasingly growing health issue due to our inactive lifestyle. If it is detected in time then through proper medical treatment, adverse effects can be prevented. To help in early detection, technology can be used very reliably and efficiently. Using machine learning we have built a predictive model that can predict whether the patient is diabetes positive or not."
+1. Clone this repository:
+ ```bash
+ git clone https://github.com/shsarv/Machine-learning-projects.git
+ cd diabetes-prediction-[End-2-END]/Diabetes-prediction-deployed
+ ```
-### Demo
-[Visit this link for live demo](https://sarvdiabetes-predictions.herokuapp.com/)
+2. Install the required dependencies:
+ ```bash
+ pip install -r requirements.txt
+ ```
-### Learning Objective
-The following points were the objective of the project (The main intention was to create an end-to-end ML project.)
-- Data gathering
-- Descriptive Analysis
-- Data Visualizations
-- Data Preprocessing
-- Data Modelling
-- Model Evaluation
-- Model Deployment
+3. Run the Flask app:
+ ```bash
+ python app.py
+ ```
-### Technical Aspect
+4. Open your browser and go to `http://localhost:5000` to access the web app.
-- Training a machine learning model using scikit-learn.
-- Building and hosting a Flask web app on Heroku.
-- A user has to put details like Number of Pregnancies, Insulin Level, Age, BMI etc .
-- Once it get all the fields information , the prediction is displyed on a new page .
-### Technologies Used
-![](https://forthebadge.com/images/badges/made-with-python.svg)
+### Deployment on Heroku
-[](https://github.com/scikit-learn/)
-
-
-
-
+To deploy the app on Heroku, follow these steps:
+1. Login to Heroku:
+ ```bash
+ heroku login
+ ```
-### Installation
-- Clone this repository and unzip it.
-- After downloading, cd into the flask directory.
-- Begin a new virtual environment with Python 3 and activate it.
-- Install the required packages using pip install -r requirements.txt
+2. Create a new Heroku app:
+ ```bash
+ heroku create your-app-name
+ ```
-### RUN
-- Execute the command: python app.py
+3. Push your code to Heroku:
+ ```bash
+ git push heroku main
+ ```
+4. Open the app in your browser:
+ ```bash
+ heroku open
+ ```
-### Bug Feature Request
-If you find a bug (the website couldn't handle the query and / or gave undesired results), kindly open an issue [here](https://github.com/shsarv/Diabetes-prediction/issues) by including your search query and the expected result.
-
-If you'd like to request a new function, feel free to do so by opening an issue [here](https://github.com/shsarv/Diabetes-prediction/issues/new/choose). Please include sample queries and their corresponding results.
-
-### owner
-**Sarvesh Kumar Sharma**
-
-
-### LICENSE
--GNU GENERAL PUBLIC LICENSE Version 3
-
+## Future Enhancements
+- Add more advanced machine learning models for improved prediction accuracy.
+- Implement user authentication for a more personalized experience.
+- Improve UI/UX for better usability.
+- Integrate more health-related data for broader insights.
+
+## Contributing
+
+Feel free to contribute by submitting issues or pull requests. For major changes, please open an issue first to discuss what you'd like to change.
+
+## Acknowledgments
+
+- [Scikit-learn Documentation](https://scikit-learn.org/stable/documentation.html)
+- [Flask Documentation](https://flask.palletsprojects.com/)
+- [Heroku Documentation](https://devcenter.heroku.com/)
+
+---
\ No newline at end of file
diff --git a/Distracted Driver Detection/supp/m b/Distracted Driver Detection/supp/m
deleted file mode 100644
index 8b13789..0000000
--- a/Distracted Driver Detection/supp/m
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/Drowsiness detection [OPEN CV]/README.md b/Drowsiness detection [OPEN CV]/README.md
index 82b5972..1d46eb7 100644
--- a/Drowsiness detection [OPEN CV]/README.md
+++ b/Drowsiness detection [OPEN CV]/README.md
@@ -2,85 +2,104 @@
## Introduction
-we will be using OpenCV for gathering the images from webcam and feed them into a Deep Learning model which will classify whether the person’s eyes are ‘Open’ or ‘Closed’. The approach we will be using for this Python project is as follows :
+This project focuses on building a Driver Drowsiness Detection System that monitors a driver's eye status using a webcam and alerts them if they appear drowsy. We utilize **OpenCV** for image capture and preprocessing, while a **Convolutional Neural Network (CNN)** model classifies whether the driver's eyes are 'Open' or 'Closed.' If drowsiness is detected, an alarm is triggered to alert the driver.
-- Step 1 – Take image as input from a camera.
+## Project Overview
-- Step 2 – Detect the face in the image and create a Region of Interest (ROI).
+### Steps in the Detection Process:
+1. **Image Capture**: Capture the image using a webcam.
+2. **Face Detection**: Detect the face in the captured image and create a Region of Interest (ROI).
+3. **Eye Detection**: Detect the eyes from the ROI and feed them into the classifier.
+4. **Eye Classification**: The classifier categorizes whether the eyes are open or closed.
+5. **Drowsiness Score Calculation**: Calculate a score to determine if the driver is drowsy based on how long their eyes remain closed.
-- Step 3 – Detect the eyes from ROI and feed it to the classifier.
+## CNN Model
-- Step 4 – Classifier will categorize whether eyes are open or closed.
-
-- Step 5 – Calculate score to check whether the person is drowsy.
-
-
-The model we used is built with Keras using Convolutional Neural Networks (CNN). A convolutional neural network is a special type of deep neural network which performs extremely well for image classification purposes. A CNN basically consists of an input layer, an output layer and a hidden layer which can have multiple layers. A convolution operation is performed on these layers using a filter that performs 2D matrix multiplication on the layer and filter.
-
-The CNN model architecture consists of the following layers:
-
- Convolutional layer; 32 nodes, kernel size 3
- Convolutional layer; 32 nodes, kernel size 3
- Convolutional layer; 64 nodes, kernel size 3
- Fully connected layer; 128 nodes
-
-The final layer is also a fully connected layer with 2 nodes. A Relu activation function is used in all the layers except the output layer in which we used Softmax.
+The **Convolutional Neural Network (CNN)** architecture consists of the following layers:
+- **Convolutional Layers**:
+ - 32 nodes, kernel size 3
+ - 32 nodes, kernel size 3
+ - 64 nodes, kernel size 3
+- **Fully Connected Layers**:
+ - 128 nodes
+ - Output layer: 2 nodes (with Softmax activation for classification)
+### Activation Function:
+- **ReLU**: Used in all layers except the output layer.
+- **Softmax**: Used in the output layer to classify the eyes as either 'Open' or 'Closed.'
## Project Prerequisites
-The requirement for this Python project is a webcam through which we will capture images. You need to have Python (3.6 version recommended) installed on your system, then using pip, you can install the necessary packages.
+### Required Hardware:
+- A webcam for image capture.
-```OpenCV – pip install opencv-python (face and eye detection).
- TensorFlow – pip install tensorflow (keras uses TensorFlow as backend).
- Keras – pip install keras (to build our classification model).
- Pygame – pip install pygame (to play alarm sound).
+### Required Libraries:
+Ensure Python (version 3.6 recommended) is installed on your system. Then, install the following libraries using `pip`:
+
+```bash
+pip install opencv-python
+pip install tensorflow
+pip install keras
+pip install pygame
```
-The “haar cascade files” folder consists of the xml files that are needed to detect objects from the image. In our case, we are detecting the face and eyes of the person.
-The models folder contains our model file “cnnCat2.h5” which was trained on convolutional neural networks.
-We have an audio clip “alarm.wav” which is played when the person is feeling drowsy.
-“Model.py” file contains the program through which we built our classification model by training on our dataset. You could see the implementation of convolutional neural network in this file.
-“Drowsiness detection.py” is the main file of our project. To start the detection procedure, we have to run this file.
+### Other Project Files:
+- **Haar Cascade Files**: Located in the "haar cascade files" folder, these XML files are necessary for detecting faces and eyes.
+- **Model File**: The "models" folder contains the pre-trained CNN model `cnnCat2.h5`.
+- **Alarm Sound**: The audio clip `alarm.wav` will play when drowsiness is detected.
+- **Python Files**:
+ - `Model.py`: The file used to build and train the CNN model.
+ - `Drowsiness detection.py`: The main file that executes the driver drowsiness detection system.
-Let’s now understand how our algorithm works step by step.
+## How the Algorithm Works
-#### Step 1 – Take Image as Input from a Camera
+### Step 1 – Image Capture
+The webcam captures images in real-time using `cv2.VideoCapture(0)` and processes each frame. The frames are stored in a variable `frame`.
-With a webcam, we will take images as input. So to access the webcam, we made an infinite loop that will capture each frame. We use the method provided by OpenCV, cv2.VideoCapture(0) to access the camera and set the capture object (cap). cap.read() will read each frame and we store the image in a frame variable.
+### Step 2 – Face Detection
+The image is converted to grayscale for face detection using a **Haar Cascade Classifier**. The faces are detected using `detectMultiScale()`, and boundary boxes are drawn around the detected faces.
-#### Step 2 – Detect Face in the Image and Create a Region of Interest (ROI)
+### Step 3 – Eye Detection
+Similar to face detection, eyes are detected within the ROI using another cascade classifier. The eye images are extracted and passed to the CNN model for classification.
-To detect the face in the image, we need to first convert the image into grayscale as the OpenCV algorithm for object detection takes gray images in the input. We don’t need color information to detect the objects. We will be using haar cascade classifier to detect faces. This line is used to set our classifier face = cv2.CascadeClassifier(‘ path to our haar cascade xml file’). Then we perform the detection using faces = face.detectMultiScale(gray). It returns an array of detections with x,y coordinates, and height, the width of the boundary box of the object. Now we can iterate over the faces and draw boundary boxes for each face.
-for (x,y,w,h) in faces:
+### Step 4 – Eye Classification
+The extracted eye images are preprocessed by resizing to 24x24 pixels, normalizing the values, and then passed into the CNN model (`cnnCat2.h5`). The model predicts whether the eyes are open or closed.
-```cv2.rectangle(frame, (x,y), (x+w, y+h(100, 100,100), 1 )```
+### Step 5 – Drowsiness Detection
+A score is calculated based on the status of both eyes. If both eyes are closed for an extended period, the score increases, indicating drowsiness. If the score exceeds a threshold, an alarm is triggered using the **Pygame** library.
-#### Step 3 – Detect the eyes from ROI and feed it to the classifier
+## Execution Instructions
-The same procedure to detect faces is used to detect eyes. First, we set the cascade classifier for eyes in leye and reye respectively then detect the eyes using left_eye = leye.detectMultiScale(gray). Now we need to extract only the eyes data from the full image. This can be achieved by extracting the boundary box of the eye and then we can pull out the eye image from the frame with this code.
+### Running the Detection System
-```l_eye = frame[ y : y+h, x : x+w ]```
+1. Open the command prompt and navigate to the directory where the main file `drowsiness detection.py` is located.
+2. Run the script using the following command:
-l_eye only contains the image data of the eye. This will be fed into our CNN classifier which will predict if eyes are open or closed. Similarly, we will be extracting the right eye into r_eye.
+```bash
+python drowsiness detection.py
+```
-#### Step 4 – Classifier will Categorize whether Eyes are Open or Closed
+The system will access the webcam and start detecting drowsiness. The real-time status will be displayed on the screen.
-We are using CNN classifier for predicting the eye status. To feed our image into the model, we need to perform certain operations because the model needs the correct dimensions to start with. First, we convert the color image into grayscale using r_eye = cv2.cvtColor(r_eye, cv2.COLOR_BGR2GRAY). Then, we resize the image to 24*24 pixels as our model was trained on 24*24 pixel images cv2.resize(r_eye, (24,24)). We normalize our data for better convergence r_eye = r_eye/255 (All values will be between 0-1). Expand the dimensions to feed into our classifier. We loaded our model using model = load_model(‘models/cnnCat2.h5’) . Now we predict each eye with our model
-lpred = model.predict_classes(l_eye). If the value of lpred[0] = 1, it states that eyes are open, if value of lpred[0] = 0 then, it states that eyes are closed.
+## Summary
-#### Step 5 – Calculate Score to Check whether Person is Drowsy
+This Python project implements a **Driver Drowsiness Detection System** using **OpenCV** and a **CNN model** to detect whether the driver’s eyes are open or closed. When the eyes are detected as closed for a prolonged time, an alert sound is played to prevent potential accidents. This system can be implemented in vehicles or other applications to enhance driver safety.
-The score is basically a value we will use to determine how long the person has closed his eyes. So if both eyes are closed, we will keep on increasing score and when eyes are open, we decrease the score. We are drawing the result on the screen using cv2.putText() function which will display real time status of the person.
+## Future Enhancements
-### Driver Drowsiness Detection Execution
+- Improve the detection accuracy by training on a larger dataset.
+- Implement real-time monitoring for multiple people.
+- Add functionalities to detect other signs of drowsiness like head tilting or yawning.
+
+## Contributing
-Let’s execute drive drowsiness detection system and see the working of our ml project. To start the project, you need to open a command prompt, go to the directory where our main file “drowsiness detection.py” exists. Run the script with this command.
+Feel free to contribute by submitting issues or pull requests. For major changes, please open an issue to discuss the proposed changes before submitting a PR.
-```python “drowsiness detection.py”```
-It may take a few seconds to open the webcam and start detection.
+## Acknowledgments
-### Summary
+- [OpenCV Documentation](https://opencv.org/)
+- [Keras Documentation](https://keras.io/)
+- [TensorFlow Documentation](https://www.tensorflow.org/)
-In this Python project, we have built a drowsy driver alert system that you can implement in numerous ways. We used OpenCV to detect faces and eyes using a haar cascade classifier and then we used a CNN model to predict the status.
\ No newline at end of file
+---
\ No newline at end of file
diff --git a/Gender and age detection using deep learning/README.md b/Gender and age detection using deep learning/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index eed5ce1..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Sarvesh Kumar Sharma
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/Medical Chatbot [END 2 END] [NLP]/Meddy.ipynb b/Medical Chatbot [END 2 END] [NLP]/Meddy.ipynb
index 93592a5..dfdef73 100644
--- a/Medical Chatbot [END 2 END] [NLP]/Meddy.ipynb
+++ b/Medical Chatbot [END 2 END] [NLP]/Meddy.ipynb
@@ -2003,7 +2003,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 14,
"metadata": {},
"outputs": [
{
@@ -2015,7 +2015,7 @@
" 129, 36, 37, 37])"
]
},
- "execution_count": 18,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
@@ -2026,7 +2026,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
@@ -2037,7 +2037,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
@@ -2081,7 +2081,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
@@ -2154,37 +2154,18 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "lr: 0.01, train\n",
- "epoch 500/1000, loss = 0.2861\n",
- "epoch 1000/1000, loss = 0.0233\n",
- "final loss = 0.0233\n",
- "y_predicted: [4, 96, 96, 96, 120, 22, 10, 126, 34, 122, 23, 81, 114, 110, 108, 36, 17, 98, 93, 92, 90, 25, 26, 32, 80, 17, 56, 29, 80, 77, 79, 79, 82, 83, 125, 78, 13, 89, 130, 129, 36, 37, 37]\n",
- "\n",
- "lr: 0.05, train\n",
- "epoch 500/1000, loss = 0.0278\n",
- "epoch 1000/1000, loss = 0.0057\n",
- "final loss = 0.0057\n",
- "y_predicted: [4, 99, 99, 99, 13, 22, 130, 126, 34, 122, 120, 81, 114, 110, 108, 45, 105, 98, 93, 92, 100, 25, 26, 32, 80, 17, 17, 29, 18, 77, 26, 26, 82, 83, 126, 87, 130, 89, 130, 129, 36, 37, 37]\n",
- "\n",
- "lr: 0.1, train\n",
- "epoch 500/1000, loss = 0.0038\n",
- "epoch 1000/1000, loss = 0.0211\n",
- "final loss = 0.0211\n",
- "y_predicted: [13, 74, 74, 3, 13, 22, 1, 126, 124, 122, 59, 81, 114, 110, 108, 45, 104, 98, 93, 92, 100, 25, 26, 32, 9, 17, 17, 76, 18, 77, 26, 80, 82, 83, 87, 84, 13, 89, 130, 129, 36, 37, 37]\n",
- "\n",
- "lr: 0.15, train\n",
- "epoch 500/1000, loss = 0.0010\n",
- "epoch 1000/1000, loss = 0.0080\n",
- "final loss = 0.0080\n",
- "y_predicted: [4, 31, 31, 3, 13, 22, 1, 126, 124, 122, 120, 81, 114, 110, 108, 45, 104, 98, 93, 92, 100, 25, 26, 32, 47, 17, 17, 76, 18, 77, 26, 80, 82, 83, 84, 84, 13, 89, 130, 129, 36, 37, 37]\n",
- "\n"
+ "ename": "NameError",
+ "evalue": "name 'nn_validation' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[1;32mIn[22], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m train_errors, test_errors \u001b[38;5;241m=\u001b[39m \u001b[43mnn_validation\u001b[49m()\n",
+ "\u001b[1;31mNameError\u001b[0m: name 'nn_validation' is not defined"
]
}
],
@@ -2194,12 +2175,12 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "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A3OBm4tZIZF8UjefiIiISAzq5hMRERGJoWjdfCNHjvQxY8YU6/AiIiIiOVu8ePGb7l6Xal3RwtSYMWNobGws1uFFREREcmZmaT89Qd18IiIiIjEoTImIiIjEoDAlIiIiEkNJPWeqtbWVpqYmmpszfQC8FFp1dTX19fVUVFQUuyoiIiIlp6TCVFNTE0OHDmXMmDGYJX+YuRSDu7Nx40aampoYO3ZssasjIiJSckqqm6+5uZna2loFqRJiZtTW1upqoYiISBolFaYABakSpO+JiIhIeiXVzSciIiKSlju0vg1b18LWJti2Npje63iom1y0ailMRWzcuJHjjz8egHXr1pFIJKirCx52+vTTT1NZWZl228bGRu666y5uvPHGjMc45phjePLJJ/NXaRERkYGgow2a1wXhaFsYlrqmI+GpfVvPbRPVClOlora2lueeew6AWbNmMWTIEK666qqu9W1tbZSXp26yhoYGGhoash6jkEEqub6Z6p9pOxERkVhat+wIRcnhqHNZ8zrwju7blVVCzSgYNBp2PxIGnQo1o4P5QfXBdM3ekKgqznmF9Bczi3PPPZfq6mqeffZZJk+ezPTp07n88stpbm6mpqaGO+64g/Hjx7Nw4UK+853v8Nvf/pZZs2bx2muvsWrVKl577TWuuOIKLrvsMgCGDBnCli1bWLhwIbNmzWLkyJEsXbqUI488knvuuQczY8GCBVx55ZUMHjyYyZMns2rVKn772992q1d7ezvXXHMNCxcuZPv27VxyySVccMEFLFy4kC9/+cuMGDGCF198kTlz5nSbX7JkCRdddBGNjY2Ul5fz3e9+l6lTp3LnnXfyq1/9ii1bttDe3s6f/vSnYjS3iIjsTLwDtr+ZOhxF51s399y2YngQimpGw/BDd4SjzmWD6qGqFqzkhnf3kFOYMrNpwA+ABPBjd78+af33gKnh7CBgD3cfHqdiv7/i96x7bl2cXfSw18S9mPb9ab3erqmpiSeffJJEIsE777zDn//8Z8rLy3n44Yf50pe+xC9/+cse27z44os8+uijvPvuu4wfP56LLrqox3Oann32WZYtW8aoUaOYPHkyTzzxBA0NDVxwwQU89thjjB07lhkzZqSs02233cawYcNYtGgR27dvZ/LkyZx00kkAPPPMMyxdupSxY8eycOHCbvM33HADZsbzzz/Piy++yEknncSKFSu6tluyZAm77757r9tIREQGmPbtsO311N1uXWHpdeho7b6dlUH1XkEYGjoe9jxuRzjqCkqjoXxwcc6rH2QNU2aWAGYDJwJNwCIzm+/uyzvLuPvnIuU/CxzRD3UtmjPPPJNEIgHA5s2bmTlzJi+//DJmRmtra8ptTjnlFKqqqqiqqmKPPfZg/fr11NfXdyszadKkrmUTJ05k9erVDBkyhP3337/rmU4zZsxgzpw5Pfb/hz/8gSVLljBv3ryuer388stUVlYyadKkbs+Eis4//vjjfPaznwXgoIMOYr/99usKUyeeeKKClIjIQNdtEHek221b0hil7Rt6bpsYtCMQ1R3bPRzVhGGpek8o27U6vnI520nASndfBWBmc4HTgOVpys8A/jtuxfpyBam/DB68Iz1/+ctfZurUqdx///2sXr2aKVOmpNymqmpH/20ikaCtra1PZdJxd2666SZOPvnkbssXLlzYrb7J9c8k13IiIlKiOtqgeX3qLrdoUGrf2nPbqrod4ah20o5wFB2jVDEM9LicHnIJU6OBNZH5JuDoVAXNbD9gLPDHNOvPB84H2HfffXtV0VKxefNmRo8eDcCdd96Z9/2PHz+eVatWsXr1asaMGcO9996bstzJJ5/MLbfcwnHHHUdFRQUrVqzoqlcmxx57LD/96U857rjjWLFiBa+99hrjx4/nmWeeyfepiIhIPrW9l/1Ot5SDuCvCQdz1MOIIGPVP3QdwDxodrC/yIO6dWb6vw00H5rl7e6qV7j4HmAPQ0NDgeT52QVx99dXMnDmTr3/965xyyil5339NTQ0333wz06ZNY/DgwRx11FEpy5133nmsXr2aD3zgA7g7dXV1/PrXv866/4svvpiLLrqIww47jPLycu68885uV8hERKTAooO4093ptrUpzSDuYd0HcScP4B40GqpG7hSDuHdm5p4505jZh4BZ7n5yOP9FAHf/fynKPgtc4u5Z7/9vaGjwxsbGbsteeOEFDj744NxrP0Bt2bKFIUOG4O5ccskljBs3js997nPZN+xH+t6IiPRBe0s4iDvDnW7bXoeOlu7bdQ7iThWOossqhhTnvHZBZrbY3VM+AymXK1OLgHFmNhZYS3D16VMpDnIQMAJ4KkZdBfjRj37ET37yE1paWjjiiCO44IILil0lERGJcg+uFKXrdusczJ1yEHfNjnBUN7nnc5MGjQ6C1C42iHtnlvU75e5tZnYp8CDBoxFud/dlZnYd0Oju88Oi04G5nu1Sl2T1uc99ruhXokREdlkd7UlP4k5xp9vWpjSDuEfuCES1k1JfWaoYrkHcA0xOsdfdFwALkpZ9JWl+Vv6qJSIi0g/atqYPR53Tzesgeeivle8IRSPeD6M+3v1KUtcg7urinJcUla4hiojIzs89GMSd6U63rWuD5yslq9htx5WjvSf0fG5SzWiortMgbklLYUpEREpb5yDuTHe6pRrEjUFNOIh76AGwx5Sez03SIG7JA4UpEREpDndofSfzAya3rYXmN3pu2zWIezSMPCb1nW41ewXPWBLpZwpTERs3buT4448HYN26dSQSCerq6gB4+umnqayszLj9woULqays5JhjjgHg1ltvZdCgQZxzzjn9W3ERkVLT0R48iTvTnW7b1gYPokxWVbuji233hhQPmBwNlSM0iFtKhsJURG1tLc899xwAs2bNYsiQIVx11VU5b79w4UKGDBnSFaYuvPDC/qhmWm1tbZSXl6edT6e9vb3rswdFRLLqGsSd4U63dIO4a0YFgahrEHfyM5Q0iFt2PgpTWSxevJgrr7ySLVu2MHLkSO6880723ntvbrzxRm699VbKy8uZMGEC119/PbfeeiuJRIJ77rmHm266iUceeaQrkE2ZMoWjjz6aRx99lLfffpvbbruNY489lq1bt3LuueeydOlSxo8fz+uvv87s2bNpaGjIqR5Tpkxh4sSJPP7448yYMYMHHnig2/zEiRO56qqraGtr46ijjuKWW26hqqqKMWPGcNZZZ/HQQw9x9dVXM3369CK1sIiUjG6DuNM9P2kttGzquW3XIO7RsNcJKbrd6jWIWwas0g1Ti6+ATc/ld58jJsKR38+5uLvz2c9+lt/85jfU1dVx7733cu2113L77bdz/fXX8+qrr1JVVcXbb7/N8OHDufDCC7tdzXrkkUe67a+trY2nn36aBQsW8NWvfpWHH36Ym2++mREjRrB8+XKWLl3KxIkTe9SjtbU1bT0AWlpa6Hya/AMPPNA139zczLhx43jkkUc48MADOeecc7jlllu44oorgOBKnD6TT2QX0NEaBKDtb4VhKd1g7tehY3vSxgbVewbhaOj7YI+P9LzTbdBoqBhalFMTKQWlG6ZKwPbt21m6dCknnngiEHSH7b333gAcfvjhfPrT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\n",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAAEICAYAAAB74HFBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAt2klEQVR4nO3de5xVdb3/8ddn9ly5CDiMFxgVTETxEuaIJVnglfKknpMeoXyI5xzznprHzPLUIbv8rJNdNNRDeUmt0CgLi5OpSealZFBDQEVEksFAREQRhrl9fn+sNcOaPfs2s/bsvRnez8djP2Zdvmut7/rOnpn3rO93rW3ujoiIiIj0TVmxKyAiIiKyM1OYEhEREYlBYUpEREQkBoUpERERkRgUpkRERERiUJgSERERiUFhSgY8M/s/M5tZAvWYZWb3FLsepc7M9jSzx8zsXTO7oR/2P8bM3MzKw/lu7w8z+7qZvWlm68L5fzazNWa2xcyOyHd94kg+lwIf+0tm9uNCH1ekFBX8B1AkF2a2JTI7CNgOtIfzF7j7T3Pdl7t/LJ916w9mNgW4x93r87CvheG+dtY/dOcDbwK7eQEehBd9f5jZvsB/Avu5+xvh4u8Al7r7b/q7LslK+Xvp7t8sdh06mdks4AB3P7vYdZFdk8KUlCR3H9I5bWargfPc/eHkcmZW7u5thazbrsTMDDB374gs61Wb9+F7tB+wvC9BKg/vh32BjZEg1VmfZX3Z2c76/iylepdSXUTSUTef7FTMbIqZNZnZF8JumDvMbISZ/dbMNpjZpnC6PrLNQjM7L5w+18weN7PvhGVfNbO0V67M7BozeyXsclpuZv8cWZdxX2Y21sz+FG77EDAyzTEGA/8HjAq7kraY2SgzK4scf6OZ3Wdmu4fbVJvZPeHyt81sUdg99g3gWOCH4X5+mOaYHzSzJ8Nt/xZeGYu21zfM7AlgK7B/2JV0iZm9DLwclvuMma00s7fMbL6ZjYrso1t5C3zPzN4ws3fM7HkzOzRFve4EZgJXh/U/wcyqzOz7ZvZ6+Pq+mVWlez+k2Gci/B69aWargFOS1i80s/PM7ATgocj34efhFdIE8DczeyUsP8rMfhm+3141s8si+5plZvPC7807wLlmNszMbjOzf5jZWgu6ERNh+bTvoVy/l0nnkulY7zOzP4bvmTfN7KdmNjyy7eqwHZcA75nZAeH3caaZvRZuc23Sud4TTo/JUrbGzH4SnuMLZna1mTVlOI9U77cfWNDd+o6ZLTazY8Pl04AvAWeF7fS3HNriAAt+NjeHdb03W9uKZOTueulV0i9gNXBCOD0FaAO+BVQBNUAt8EmC7sChwC+AX0e2X0hwZQvgXKAV+AzBH8mLgNcJrr6kOvaZwCiCfzzOAt4D9s5lX8BTwHfDen4EeJegyybVcaYATUnLLgf+AtSH+/hf4OfhuguAB8JzTgBHEnSLdTvfNMcaDWwEPh6e14nhfF1k+9eAQwiuXlcAThA0dg/b/DiCrrgPhHW7CXgscozk8icDi4HhgAEHd7ZjivrdCXw9Mn9d2A57AHXAk8DX0r0fUuzvQuBFYJ+wPo+G9StP8f5I9X1wgi4kwvZaDHwFqAT2B1YBJ4frZ4XvidPDsjXA/eH3bnB4Dk8TdFVD9vdQtu/lmKRzyXSsA8LvdVXYjo8B30/6OXsubKeayL5/FM6/n6C7/eDIud6TVI90Za8H/gSMIHg/L0lu5xRt3vX+CZedTfCzXk7QFbsOqE6uS2Qfmdri58C14feoGvhwsX/P6bVzv4peAb30yvaiZ5hq6fwlmqb8RGBTZL7rD1L4x2tlZN2g8Bf3XjnW5TngtGz7IuguagMGR9b/LPkXfmTdlOQ/LsALwPGR+b0J/vCWA/9OECoOT7GvrvNNc6wvAHcnLXsQmBnZ/rqk9Q4cF5m/Dfh2ZH5IWLcxacofB6wAPgiUZWnjO+kepl4BPh6ZPxlY3Yv3wx+BCyPzJ9H3MHU08FrS+i8Cd4TTs+geKvckCBU1kWUzgEdzeT/m8L0c03ku2Y6VYtvTgWeTfs7+PcW+6yPLngamR841OUylK9sVOMP585LbOdP7LU2ZTcD7k+uSY7vfBcyJ1lcvveK8NGZKdkYb3L25c8bMBgHfA6YR/OcLMNTMEu7enmL7dZ0T7r7VzCAIAz2Y2TnAlQR/LDrLRbvr0u1rJEGgey9S9u8E//Xnaj/gfjPriCxrJ/hDcXe4r7lhV809wLXu3prjfs80s09EllUQXLHptCbFdtFlo4BnOmfcfYuZbSS46rU6uby7/zHsppoN7GdmvwKucvd3cqjvKIK26/T3cFmnbu+HNNtH6/73dAVzsB9BN+DbkWUJ4M+R+TVJ5SuAf4TvDQiuhkTL5Px+zKFuaY9lZnsCPyDoOhwartuUtI9U3/d1kemtWeqWrmzy9yDVcZJ1K2NmVwH/Ee7Lgd1I03VO9na/Gvga8LSZbQJucPfbc6iTSEoaMyU7I0+a/09gPHC0u+9G0KUGQXdSn5nZfgTdFpcCte4+HFia437/AYywYDxUp30zlE8+Jwh+8X/M3YdHXtXuvtbdW939q+4+ATgG+CfgnAz7St7v3Un7Hezu12epT3TZ6wR/sICucV+1wNp0+3D3G939SGACcCDw+Sz1THksgnZ8PUtdo/5B9xCb6fuQzRrg1aS2G+ruH09TnzUEV0hGRsrv5u6H5Hi8bOeWXLdMx/pmuL/Dwp+Ts+n5Xu7N8XrjHwTde51y+aeiqy7h+KirgX8FRoQ/i5vZUf/kemdsC3df5+6fcfdRBF3mN5vZAX04LxFAYUoGhqHANuBtCwZo/3ee9juY4Jf0BgAz+zegx6DpVNz970Aj8FUzqzSzDwOfyLDJeqDWzIZFlt0KfCMMdZhZnZmdFk5PNbPDwgG17xB0sXVE9rV/hmPdA3zCzE62YHB2tQUDuXvzWIafA/9mZhMtGAz+TeCv7r46VWEzO8rMjjazCoJxZ82R+uZyrP8Kz38kwXil3jyv6z7gMjOrN7MRwDW92DbZ08C74UDtmrD9DjWzo1IVdvd/AH8AbjCz3Sy4qeB9ZvbRHI+X7XvZm2MNBbYAm81sNLmH2Xy4D/iiBTeLjCb4B6U3hhJ0m28Ays3sKwRXpjqtB8aYWRlkbwszOzPyft9E8HOe6/tRpAeFKRkIvk8w6PVNgoHKv8/HTt19OXADwUDy9cBhwBO92MWnCMbYvEUQ8O7KcKwXCULDKgvusBtF0CUzH/iDmb1LcG5Hh5vsBcwjCFIvEAzuvTtc9wPgjPDOqRtTHGsNcBrBHVAbCP6L/zy9+H3gwWMqvgz8kuCqw/uA6Rk22Y3gKt8mgm62jcD/5Hi4rxME0yXA8wTdi1/Pta7hcR8E/hZu+6tebNtN2G38TwTj8l4leM/9GBiWYbNzCAarLyc4/3kE499ykfF72ctjfZXghoHNwO+I0Q59cB3QRNBmD4f12t6L7R8k+LleQfD+aaZ7N+Avwq8bzayz+zlTWxwF/NWCuzXnA5e7+6penpNIl847RkRERArCzC4iGJye6xU6kZKmK1MiItKvzGxvM5scdreNJxjneH+x6yWSL7qbT0RE+lslwTOfxgJvA3OBm4tZIZF8UjefiIiISAzq5hMRERGJoWjdfCNHjvQxY8YU6/AiIiIiOVu8ePGb7l6Xal3RwtSYMWNobGws1uFFREREcmZmaT89Qd18IiIiIjEoTImIiIjEoDAlIiIiEkNJPWeqtbWVpqYmmpszfQC8FFp1dTX19fVUVFQUuyoiIiIlp6TCVFNTE0OHDmXMmDGYJX+YuRSDu7Nx40aampoYO3ZssasjIiJSckqqm6+5uZna2loFqRJiZtTW1upqoYiISBolFaYABakSpO+JiIhIeiXVzSciIiKSlju0vg1b18LWJti2Npje63iom1y0ailMRWzcuJHjjz8egHXr1pFIJKirCx52+vTTT1NZWZl228bGRu666y5uvPHGjMc45phjePLJJ/NXaRERkYGgow2a1wXhaFsYlrqmI+GpfVvPbRPVClOlora2lueeew6AWbNmMWTIEK666qqu9W1tbZSXp26yhoYGGhoash6jkEEqub6Z6p9pOxERkVhat+wIRcnhqHNZ8zrwju7blVVCzSgYNBp2PxIGnQo1o4P5QfXBdM3ekKgqznmF9Bczi3PPPZfq6mqeffZZJk+ezPTp07n88stpbm6mpqaGO+64g/Hjx7Nw4UK+853v8Nvf/pZZs2bx2muvsWrVKl577TWuuOIKLrvsMgCGDBnCli1bWLhwIbNmzWLkyJEsXbqUI488knvuuQczY8GCBVx55ZUMHjyYyZMns2rVKn772992q1d7ezvXXHMNCxcuZPv27VxyySVccMEFLFy4kC9/+cuMGDGCF198kTlz5nSbX7JkCRdddBGNjY2Ul5fz3e9+l6lTp3LnnXfyq1/9ii1bttDe3s6f/vSnYjS3iIjsTLwDtr+ZOhxF51s399y2YngQimpGw/BDd4SjzmWD6qGqFqzkhnf3kFOYMrNpwA+ABPBjd78+af33gKnh7CBgD3cfHqdiv7/i96x7bl2cXfSw18S9mPb9ab3erqmpiSeffJJEIsE777zDn//8Z8rLy3n44Yf50pe+xC9/+cse27z44os8+uijvPvuu4wfP56LLrqox3Oann32WZYtW8aoUaOYPHkyTzzxBA0NDVxwwQU89thjjB07lhkzZqSs02233cawYcNYtGgR27dvZ/LkyZx00kkAPPPMMyxdupSxY8eycOHCbvM33HADZsbzzz/Piy++yEknncSKFSu6tluyZAm77757r9tIREQGmPbtsO311N1uXWHpdeho7b6dlUH1XkEYGjoe9jxuRzjqCkqjoXxwcc6rH2QNU2aWAGYDJwJNwCIzm+/uyzvLuPvnIuU/CxzRD3UtmjPPPJNEIgHA5s2bmTlzJi+//DJmRmtra8ptTjnlFKqqqqiqqmKPPfZg/fr11NfXdyszadKkrmUTJ05k9erVDBkyhP3337/rmU4zZsxgzpw5Pfb/hz/8gSVLljBv3ryuer388stUVlYyadKkbs+Eis4//vjjfPaznwXgoIMOYr/99usKUyeeeKKClIjIQNdtEHek221b0hil7Rt6bpsYtCMQ1R3bPRzVhGGpek8o27U6vnI520nASndfBWBmc4HTgOVpys8A/jtuxfpyBam/DB68Iz1/+ctfZurUqdx///2sXr2aKVOmpNymqmpH/20ikaCtra1PZdJxd2666SZOPvnkbssXLlzYrb7J9c8k13IiIlKiOtqgeX3qLrdoUGrf2nPbqrod4ah20o5wFB2jVDEM9LicHnIJU6OBNZH5JuDoVAXNbD9gLPDHNOvPB84H2HfffXtV0VKxefNmRo8eDcCdd96Z9/2PHz+eVatWsXr1asaMGcO9996bstzJJ5/MLbfcwnHHHUdFRQUrVqzoqlcmxx57LD/96U857rjjWLFiBa+99hrjx4/nmWeeyfepiIhIPrW9l/1Ot5SDuCvCQdz1MOIIGPVP3QdwDxodrC/yIO6dWb6vw00H5rl7e6qV7j4HmAPQ0NDgeT52QVx99dXMnDmTr3/965xyyil5339NTQ0333wz06ZNY/DgwRx11FEpy5133nmsXr2aD3zgA7g7dXV1/PrXv866/4svvpiLLrqIww47jPLycu68885uV8hERKTAooO4093ptrUpzSDuYd0HcScP4B40GqpG7hSDuHdm5p4505jZh4BZ7n5yOP9FAHf/fynKPgtc4u5Z7/9vaGjwxsbGbsteeOEFDj744NxrP0Bt2bKFIUOG4O5ccskljBs3js997nPZN+xH+t6IiPRBe0s4iDvDnW7bXoeOlu7bdQ7iThWOossqhhTnvHZBZrbY3VM+AymXK1OLgHFmNhZYS3D16VMpDnIQMAJ4KkZdBfjRj37ET37yE1paWjjiiCO44IILil0lERGJcg+uFKXrdusczJ1yEHfNjnBUN7nnc5MGjQ6C1C42iHtnlvU75e5tZnYp8CDBoxFud/dlZnYd0Oju88Oi04G5nu1Sl2T1uc99ruhXokREdlkd7UlP4k5xp9vWpjSDuEfuCES1k1JfWaoYrkHcA0xOsdfdFwALkpZ9JWl+Vv6qJSIi0g/atqYPR53Tzesgeeivle8IRSPeD6M+3v1KUtcg7urinJcUla4hiojIzs89GMSd6U63rWuD5yslq9htx5WjvSf0fG5SzWiortMgbklLYUpEREpb5yDuTHe6pRrEjUFNOIh76AGwx5Sez03SIG7JA4UpEREpDndofSfzAya3rYXmN3pu2zWIezSMPCb1nW41ewXPWBLpZwpTERs3buT4448HYN26dSQSCerq6gB4+umnqayszLj9woULqays5JhjjgHg1ltvZdCgQZxzzjn9W3ERkVLT0R48iTvTnW7b1gYPokxWVbuji233hhQPmBwNlSM0iFtKhsJURG1tLc899xwAs2bNYsiQIVx11VU5b79w4UKGDBnSFaYuvPDC/qhmWm1tbZSXl6edT6e9vb3rswdFRLLqGsSd4U63dIO4a0YFgahrEHfyM5Q0iFt2PgpTWSxevJgrr7ySLVu2MHLkSO6880723ntvbrzxRm699VbKy8uZMGEC119/PbfeeiuJRIJ77rmHm266iUceeaQrkE2ZMoWjjz6aRx99lLfffpvbbruNY489lq1bt3LuueeydOlSxo8fz+uvv87s2bNpaGjIqR5Tpkxh4sSJPP7448yYMYMHHnig2/zEiRO56qqraGtr46ijjuKWW26hqqqKMWPGcNZZZ/HQQw9x9dVXM3369CK1sIiUjG6DuNM9P2kttGzquW3XIO7RsNcJKbrd6jWIWwas0g1Ti6+ATc/ld58jJsKR38+5uLvz2c9+lt/85jfU1dVx7733cu2113L77bdz/fXX8+qrr1JVVcXbb7/N8OHDufDCC7tdzXrkkUe67a+trY2nn36aBQsW8NWvfpWHH36Ym2++mREjRrB8+XKWLl3KxIkTe9SjtbU1bT0AWlpa6Hya/AMPPNA139zczLhx43jkkUc48MADOeecc7jlllu44oorgOBKnD6TT2QX0NEaBKDtb4VhKd1g7tehY3vSxgbVewbhaOj7YI+P9LzTbdBoqBhalFMTKQWlG6ZKwPbt21m6dCknnngiEHSH7b333gAcfvjhfPrT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",
"text/plain": [
"
+![Contributors](https://img.shields.io/github/contributors/shsarv/Machine-Learning-Projects?color=dark-green)
+![Forks](https://img.shields.io/github/forks/shsarv/Machine-Learning-Projects?style=social)
+![Stargazers](https://img.shields.io/github/stars/shsarv/Machine-Learning-Projects?style=social)
+![Issues](https://img.shields.io/github/issues/shsarv/Machine-Learning-Projects)
+![License](https://img.shields.io/github/license/shsarv/Machine-Learning-Projects)
-![Contributors](https://img.shields.io/github/contributors/shsarv/Machine-Learning-Projects?color=dark-green) ![Forks](https://img.shields.io/github/forks/shsarv/Machine-Learning-Projects?style=social) ![Stargazers](https://img.shields.io/github/stars/shsarv/Machine-Learning-Projects?style=social) ![Issues](https://img.shields.io/github/issues/shsarv/Machine-Learning-Projects) ![License](https://img.shields.io/github/license/shsarv/Machine-Learning-Projects)
-
-------------------
-
-**This Contain All the Machine Learning Projects that I have done while understanding Machine Learning Concepts.**
-
-
-## List of Projects :-
-
-| Project Name | Link |
-|---------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
-| AI Room Booking Chabot using IBM Watson | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/AI%20Room%20Booking%20Chatbot%20%5BIBM%20WATSON%5D) |
-| Brain Tumor Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/BRAIN%20TUMOR%20DETECTION%20%5BEND%202%20END%5D) |
-| Classification of Arrhythmia Using ECG Data | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Classification%20of%20Arrhythmia%20%5BECG%20DATA%5D) |
-| Colorize Black and White Image | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Colorize%20Black%20%26%20white%20images%20%5BOPEN%20CV%5D) |
-| Diabetes Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Diabetes%20Prediction%20%5BEND%202%20END%5D) |
-| Distracted Driver Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Distracted%20Driver%20Detection) |
-| Drowsiness Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Drowsiness%20detection%20%5BOPEN%20CV%5D) |
-| Gender and Age Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Gender%20and%20age%20detection%20using%20deep%20learning) |
-| Getting Admission in College Prediction | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Getting%20Admission%20in%20College%20Prediction) |
-| Heart Disease Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Heart%20Disease%20Prediction%20%5BEND%202%20END%5D) |
-| Human Activity Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Human%20Activity%20Detection) |
-| Human Detection and Counting Project | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Human%20Detection%20%26%20Counting%20Project%20%5BOPEN%20CV%5D) |
-| IPL Score Prediction | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/IPL%20Score%20Prediction) |
-| Iris Flower Classification | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Iris%20Flower%20Classification) |
-| Lane Line Detection | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Lane%20Line%20Detection%20%5BOPEN%20CV%5D) |
-| Loan Repayment Prediction | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Loan%20Repayment%20Prediction) |
-| Mechanisms of Action (MOA) Prediction | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Mechanisms%20Of%20Action%20(MoA)%20Prediction) |
-| Medical Chatbot | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Medical%20Chatbot%20%5BEND%202%20END%5D%20%5BNLP%5D) |
-| Predict Employee Turnover | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Predict%20Employee%20Turnover%20with%20scikitlearn) |
-| Predict Property maintainance Fine | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Predicting%20Property%20Maintenance%20Fines) |
-| Research Topic Prediction | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Research%20topic%20Prediction) |
-| Smile Selfie Capture | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Smile%20Selfie%20Capture%20Project%20%20%5BOPEN%20CV%5D) |
-| The Battle of Neighbourhood | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/The%20Battle%20of%20Neighborhoods%20-Coursera%20capstone) |
-| Time Series Regression MultiStore Sales | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/TimeSeries%20Multi%20StoreSales%20prediction) |
-| Wine Quality Prediction | [Link](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Wine%20Quality%20prediction) |
-
-
-## Contributing
-
-Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.
-* If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/shsarv/Machine-Learning-Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes.
-* Please make sure you check your spelling and grammar.
-* Create individual PR for each suggestion.
-* Please also read through the [Code Of Conduct](https://github.com/shsarv/Machine-Learning-Projects/blob/main/CODE_OF_CONDUCT.md) before posting your first idea as well.
-
-### Creating A Pull Request
-
-1. Fork the Repo
-2. Create your Project Branch (`git checkout -b Project/AmazingProject`)
-3. Commit your Changes (`git commit -m 'Add some AmazingProject'`)
-4. Push to the Branch (`git push origin Project/AmazingProject`)
-5. Open a Pull Request
+----
+
+## Project Overview
+
+Welcome to the **Machine Learning Projects Repository**! This collection encompasses various projects demonstrating core concepts in **machine learning**, **deep learning**, **natural language processing (NLP)**, and **computer vision**. It includes both **deployed applications** (built using **Flask**) and **GUI-based apps** (using **Tkinter**). These projects illustrate the potential of machine learning across domains, including medical diagnosis, human activity recognition, image processing, and more.
+
+## Project List
+
+Here’s a detailed list of all projects included in this repository:
+
+| Project Name | Description | Link |
+|---------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|------|
+| **AI Room Booking Chatbot** | An intelligent chatbot built with **IBM Watson Assistant** to facilitate room bookings. | [AI Room Booking Chatbot](https://github.com/shsarv/Machine-Learning-Projects/tree/main/AI%20Room%20Booking%20Chatbot%20%5BIBM%20WATSON%5D) |
+| **Brain Tumor Detection (Flask App)** | A deep learning-based **Flask** app for detecting brain tumors in MRI scans using **PyTorch**. Medical professionals can upload scans to receive predictions. | [Brain Tumor Detection](https://github.com/shsarv/Machine-Learning-Projects/tree/main/BRAIN%20TUMOR%20DETECTION%20%5BEND%202%20END%5D) |
+| **Arrhythmia Classification** | Predict and classify arrhythmias using **machine learning** algorithms and ECG data. Dataset from the [UCI Repository](https://archive.ics.uci.edu/ml/datasets/Arrhythmia). | [Arrhythmia Classification](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Classification%20of%20Arrhythmia%20%5BECG%20DATA%5D) |
+| **Image Colorization** | A deep learning-based solution for colorizing black-and-white images using **OpenCV** and deep neural networks. | [Image Colorization](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Colorize%20Black%20%26%20white%20images%20%5BOPEN%20CV%5D) |
+| **Diabetes Prediction (Flask App)** | A web application for predicting the likelihood of diabetes based on health parameters. Built using **Flask** and **scikit-learn**. | [Diabetes Prediction](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Diabetes%20Prediction%20%5BEND%202%20END%5D) |
+| **Distracted Driver Detection** | Detect different distracted behaviors of drivers (e.g., texting, eating) using **CNN** and **image classification** techniques. | [Distracted Driver Detection](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Distracted%20Driver%20Detection) |
+| **Driver Drowsiness Detection** | Detect drowsiness in drivers using **OpenCV** and **CNN** models based on eye status, with real-time alerts for safety. | [Driver Drowsiness Detection](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Drowsiness%20detection%20%5BOPEN%20CV%5D) |
+| **Emoji Generator Based on Emotions (Tkinter)** | A **Tkinter** GUI application that detects facial expressions in real time and generates emojis based on detected emotions. | [Emoji Generator](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Emoji%20Generator) |
+| **Gender and Age Detection** | A deep learning-based app that predicts the gender and age of a person using facial images and **OpenCV**. | [Gender and Age Detection](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Gender%20and%20age%20detection%20using%20deep%20learning) |
+| **Heart Disease Prediction** | Predict the likelihood of heart disease based on medical attributes. Built using **scikit-learn** models, with 92% accuracy. | [Heart Disease Prediction](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Heart%20Disease%20Prediction%20%5BEND%202%20END%5D) |
+| **Human Activity Recognition (LSTM)** | Classify human activities using **2D pose estimation** and **LSTM**. Explore the application of limited dataset inputs for behavior prediction. | [Human Activity Recognition](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Human%20Activity%20Detection) |
+| **Human Detection & Counting** | An **OpenCV** project that detects humans in images/videos and counts the number of people present. | [Human Detection & Counting](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Human%20Detection%20%26%20Counting%20Project%20%5BOPEN%20CV%5D) |
+| **IPL Score Prediction** | Predict first-inning scores in IPL matches using **EDA** and various regression models (Linear, Decision Tree, Random Forest, etc.). | [IPL Score Prediction](https://github.com/shsarv/Machine-Learning-Projects/tree/main/IPL%20Score%20Prediction) |
+| **Iris Flower Classification** | Classify iris flowers into different species based on petal and sepal measurements using classic machine learning algorithms. | [Iris Flower Classification](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Iris%20Flower%20Classification) |
+| **Medical Chatbot (NLP)** | A medical chatbot built with **NLP** that uses a dataset of disease symptoms and responds with probable diagnoses. | [Medical Chatbot](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Medical%20Chatbot%20%5BEND%202%20END%5D%20%5BNLP%5D) |
+| **Predict Employee Turnover** | Predict employee turnover using **scikit-learn** decision trees and random forest models. | [Predict Employee Turnover](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Predict%20Employee%20Turnover%20with%20scikitlearn) |
+| **Wine Quality Prediction** | Predict wine quality using physicochemical features like acidity, sugar, and pH with machine learning models. | [Wine Quality Prediction](https://github.com/shsarv/Machine-Learning-Projects/tree/main/Wine%20Quality%20prediction) |
+
+
+## Technologies Used
+
+This repository includes a wide range of technologies and tools used in various machine learning and data science projects:
+
+- **Programming Languages:** Python
+- **Libraries/Frameworks:**
+ - Machine Learning: scikit-learn, TensorFlow, PyTorch, Keras
+ - NLP: IBM Watson, Natural Language Toolkit (NLTK), SpaCy
+ - Web Development: Flask
+ - Image Processing: OpenCV
+ - GUI Development: Tkinter
+ - Deep Learning: CNN, LSTM, DNN
+- **Tools & Platforms:**
+ - IBM Watson, Google Colab, Jupyter Notebooks
+ - Deployed apps using Flask
+ - Git and GitHub for version control
+
+## Contributing 🌱
+
+We welcome contributions to this project! If you would like to improve the existing codebase or contribute new features, feel free to submit a pull request. Before submitting, please ensure that you adhere to the following:
+
+```
+1. **Fork the repository** and create your feature branch:
+ ```bash
+ git checkout -b feature/YourFeature
+ ```
+
+2. **Commit your changes**:
+ ```bash
+ git commit -m "Add your feature description"
+ ```
+
+3. **Push your branch** to GitHub:
+ ```bash
+ git push origin feature/YourFeature
+ ```
+
+4. **Open a pull request** to the `main` branch.
+
+For major changes, please open an issue first to discuss what you would like to change.
+
+---
+
+## 📊 Project Structure
+
+Each project follows a consistent structure for easy navigation and understanding:
+```plaintext
+ProjectName/
+│
+├── data/ # Data files and datasets
+├── notebooks/ # Jupyter notebooks for experimentation and prototyping
+├── models/ # Trained machine learning models (if applicable)
+├── static/ # Static files (CSS, JS, images for Flask-based projects)
+├── templates/ # HTML templates (for Flask-based projects)
+├── src/ # Core Python scripts for data preprocessing, model training, etc.
+├── app.py # Main application file for Flask-based projects
+├── README.md # Project-specific readme file
+└── requirements.txt # List of dependencies for the project
+```
+
+Feel free to explore individual projects to understand the data flow and code structure.
+
+---
+
+## 🌍 Deployment
+
+Some of the projects can be easily deployed on cloud platforms like **Heroku**, **AWS**, or **Azure**. The following steps outline a generic approach for deploying a Flask-based web app on Heroku:
+
+1. **Install Heroku CLI**:
+ Follow the instructions [here](https://devcenter.heroku.com/articles/heroku-cli).
+
+2. **Login to Heroku**:
+ ```bash
+ heroku login
+ ```
+
+3. **Create a new Heroku app**:
+ ```bash
+ heroku create your-app-name
+ ```
+
+4. **Push to Heroku**:
+ Ensure your `Procfile` is correctly set up for Flask:
+ ```plaintext
+ web: gunicorn app:app
+ ```
+ Then push the project to Heroku:
+ ```bash
+ git push heroku main
+ ```
+
+5. **View your deployed app**:
+ ```bash
+ heroku open
+ ```
+
+You can follow similar steps for AWS (using **Elastic Beanstalk**) or Azure (using **App Services**).
+
+## 🎯 Roadmap
+
+### Future Enhancements:
+- [ ] Integrate **Explainable AI (XAI)** models for better understanding of predictions in complex models.
+- [ ] Add **Docker** support for easy containerization of all projects.
+- [ ] Incorporate **CI/CD pipelines** using GitHub Actions for automated testing and deployment.
+- [ ] Migrate some projects to use **streamlit** for interactive dashboards.
+- [ ] Explore **Reinforcement Learning** for game-based AI projects.
+- [ ] Expand the **NLP** section to include text summarization, translation, and more chatbot capabilities.
+
+## 📚 Resources and References
+
+- **Official Python Documentation**: [Python.org](https://docs.python.org/3/)
+- **Flask Documentation**: [Flask.palletsprojects.com](https://flask.palletsprojects.com/en/2.0.x/)
+- **Scikit-learn User Guide**: [Scikit-learn.org](https://scikit-learn.org/stable/user_guide.html)
+- **Keras Documentation**: [Keras.io](https://keras.io/)
+- **TensorFlow Documentation**: [Tensorflow.org](https://www.tensorflow.org/)
+- **PyTorch Documentation**: [Pytorch.org](https://pytorch.org/docs/)
+
+For a deeper understanding of AI, machine learning, and data science, I recommend the following courses:
+- **Coursera - Machine Learning by Andrew Ng**
+- **Udacity - AI for Everyone**
+- **Kaggle Learn - Data Science**
+
+## ⭐ Acknowledgments
+
+- The wonderful **Kaggle** community, which provided open datasets and insightful discussions.
+- **Udemy**, **Coursera**, and **edX** instructors who have helped me build a solid foundation in AI.
## License
Distributed under the MIT License. See [LICENSE](https://github.com/shsarv/Machine-Learning-Projects/blob/main/LICENSE.md) for more information.
-### Work By
-
-
diff --git a/Resources/banner.gif b/Resources/banner.gif
new file mode 100644
index 0000000..b05164f
Binary files /dev/null and b/Resources/banner.gif differ
diff --git a/emoji creator project [OPEN CV]/README.md b/emoji creator project [OPEN CV]/README.md
new file mode 100644
index 0000000..1a7b777
--- /dev/null
+++ b/emoji creator project [OPEN CV]/README.md
@@ -0,0 +1,140 @@
+# Emoji Generator Based on Facial Emotions
+
+## Introduction
+
+This project is a **GUI-based application** built using **Tkinter** that generates emojis based on facial emotions. It detects the user's facial expressions in real time using the webcam, predicts emotions like happiness, sadness, anger, etc., and displays an appropriate emoji corresponding to the detected emotion.
+
+### Key Features:
+- **Real-time Facial Emotion Detection**: Uses **OpenCV** to capture video input from the webcam.
+- **Emotion Prediction**: Employs a **deep learning model** built with **TensorFlow** and **Keras** to classify emotions.
+- **Emoji Generation**: The app displays the corresponding emoji based on the detected facial expression.
+- **GUI**: Built using **Tkinter** to provide a simple and user-friendly interface.
+
+## Project Overview
+
+### Steps:
+1. **Face Detection**: Detect the face from the video feed using OpenCV and **Haar Cascade Classifier** (`haarcascade_frontalface_default.xml`).
+2. **Emotion Detection**: Preprocess the face and feed it into the pre-trained deep learning model to classify the emotion.
+3. **Emoji Display**: Display an emoji that represents the detected emotion.
+
+## Directory Structure
+
+```
+Emoji-Generator/
+│
+├── Model/
+│ ├── emotion_model.h5 # Pre-trained Keras model for emotion detection
+│ └── haarcascade_frontalface_default.xml # Haar cascade for face detection
+│
+├── emojis/
+│ ├── happy.png # Emoji for happy emotion
+│ ├── sad.png # Emoji for sad emotion
+│ ├── angry.png # Emoji for angry emotion
+│ └── ... # Other emojis for various emotions
+│
+├── app.py # Main Python script for running the Tkinter app
+├── README.md # Project documentation
+├── requirements.txt # List of required Python libraries
+└── utils.py # Helper functions for preprocessing and detection
+```
+
+## Setup Instructions
+
+### Step 1: Create a Virtual Environment
+
+Before you run the project, create a virtual environment to isolate the dependencies.
+
+```bash
+# For Windows
+python -m venv venv
+venv\Scripts\activate
+
+# For macOS/Linux
+python3 -m venv venv
+source venv/bin/activate
+```
+
+### Step 2: Install the Required Dependencies
+
+The necessary Python packages for this project are listed in `requirements.txt`. Install them by running:
+
+```bash
+pip install -r requirements.txt
+```
+
+Packages you will need:
+- **TensorFlow**
+- **Keras**
+- **OpenCV (cv2)**
+- **Tkinter**
+- **Numpy**
+
+### Step 3: Download Pretrained Model
+
+The pre-trained emotion detection model (`emotion_model.h5`) is already included in the `Model/` directory. If you need to retrain the model or want to explore further, ensure that you have TensorFlow/Keras set up for training.
+
+### Step 4: Running the GUI Application
+
+To start the GUI application, run the `app.py` file:
+
+```bash
+python app.py
+```
+
+This will launch the GUI interface, where you can start detecting emotions in real-time using your webcam. The corresponding emoji will be displayed based on the detected emotion.
+
+## Model Overview
+
+The emotion detection model is a **Convolutional Neural Network (CNN)** trained to classify facial expressions. The model was built using **TensorFlow** and **Keras**, and the following emotions are supported:
+- Happy
+- Sad
+- Angry
+- Surprised
+- Neutral
+
+### Model Architecture:
+- **Convolutional Layers**: Extract features from the input face image.
+- **Max Pooling Layers**: Downsample the feature maps.
+- **Fully Connected Layers**: Classify the emotions based on the extracted features.
+- **Softmax Activation**: Outputs probabilities for each emotion class.
+
+## Data Preprocessing
+
+The facial images captured from the webcam are preprocessed before feeding into the model:
+- **Grayscale Conversion**: The images are converted to grayscale to reduce complexity.
+- **Face Detection**: OpenCV’s Haar Cascade Classifier is used to detect the face from the video frame.
+- **Resizing**: The detected face is resized to the dimensions required by the model (48x48 pixels).
+- **Normalization**: The pixel values are normalized to [0, 1] for better model performance.
+
+## Emoji Display
+
+Once the emotion is detected, the corresponding emoji is displayed on the GUI. The emojis are stored in the `emojis/` folder and loaded into the app when an emotion is detected.
+
+Supported emojis:
+- Happy (`happy.png`)
+- Sad (`sad.png`)
+- Angry (`angry.png`)
+- Surprised (`surprised.png`)
+- Neutral (`neutral.png`)
+
+## Example Usage
+
+### Step 1: Launch the App
+Once you run `app.py`, a window will open with a live video feed from your webcam.
+
+### Step 2: Start Detection
+Click the **Start** button, and the system will start detecting your facial emotions in real-time.
+
+### Step 3: View Emoji
+As soon as your emotion is detected, the corresponding emoji (happy, sad, angry, etc.) will appear in the GUI.
+
+### Sample Interface:
+
+- Webcam feed on the left side.
+- Emoji based on detected emotion on the right side.
+
+## Conclusion
+
+This project demonstrates how we can integrate **deep learning models** with **GUI-based applications** using Tkinter. By leveraging real-time facial emotion detection, this application offers a fun and interactive way to generate emojis. With further improvements, this can be expanded for more practical use cases such as emotional AI, personalized responses, or interactive systems.
+
+---
\ No newline at end of file