# Asteroid Diameter Prediction using ML/DL techniques
> PaAC Open Projects Autumn'2022
### Problem Statement
The diameter of an asteroid is one the most important physical parameter of an asteroid, it is used to detect if an asteroid is potentially hazardous or not if it is found to be a Near Earth Object. We aim to train a ML/DL model on JPL asteroid database to predict asteroid diameter.
### Solution
* Get a clear idea where Machine Learning can help in solving the problem
* Perform extensive EDA (Exploratory Data Analysis) of the dataset and choose a suitable ML/DL model
* Clean and prepare dataset for training
* Train and evaluate model performance by choosing suitable metrics (r2-score)
* Tune hyper-parameters to get better results
* Present inferences and results effectively
### Timeline
#### Week 1: `25th Aug,22` - `31st Aug,22`
* Get comfortable with using Google Colab and Github
* Perform basic EDA on the Asteroid dataset
* Present results and inferences effectively using Seaborn and MatplotLib
```
Weekly Submission: Basic EDA on the dataset (upload colab notebook)
```
#### Week 2: `1st Sept,22` - `7th Sept,22`
* Dig deep into features in the JPL dataset (characteristics of an asteroid) and understand which ones could be helpful in estimating diameter.
* Try some complex plots to gain more insights
* Learn about feature selection and feature engineering
```
Weekly Submission: Complete the data analysis and get dataset ready for model development
```
#### Week 3: `8th Sept,22` - `14th Sept,22`
* Understand intuition behind train-validation-split and cross validation
* Learn how to build basic ML models using scikit-learn
* Tune hyperparameters
* Read about different evaluation metrics (MSE, R2-Score)
* Try some basic regression models (LGBM, XGB, SVM)
```
Weekly Submission: Build a regression model using clean data and submit results.
```
#### Week 4: `15th Sept,22` - `21 Sept,22`
* Learn about neural networks and deep learning
* Understand how neural networks learn, backpropagation
* Neural networks as functional mapping between inputs and target
* Learn tensorflow to build basic neural networks
```
Weekly Submission: Build a basic DNN architecture.
```
#### Week 5: `22nd Sept,22` - `28th Sept,22`
* Train the DNN/ML model on JPL dataset
* Play around with hyperparameters (no. of layers, neurons, learning rate, momentum)
* Prepare an extensive report of the work done
```
Weekly Submission: Submit the project report
```
## Resources
* [Asteroid Diameter Prediction using MLP](http://www.iraj.in/journal/journal_file/journal_pdf/12-555-156136953136-40.pdf)
* [Dataset](https://www.kaggle.com/datasets/basu369victor/prediction-of-asteroid-diameter)
* [Asteroids: Crash Course](https://www.youtube.com/watch?v=auxpcdQimCs)
* [Numpy, Pandas and Matplotlib tutorial](https://cloudxlab.com/blog/numpy-pandas-introduction/)
* [EDA in python](https://www.analyticsvidhya.com/blog/2022/02/exploratory-data-analysis-in-python/#:~:text=Exploratory%20Data%20Analysis%20(EDA)%20in,analysis%20and%20non%2Dgraphical%20analysis.)
* [Linear Regression using scikit-learn](https://stackabuse.com/linear-regression-in-python-with-scikit-learn/)
* [GridSearchCV](https://www.youtube.com/watch?v=HdlDYng8g9s)
* [3B1B: What is a neural network?](https://www.youtube.com/watch?v=aircAruvnKk)
* [Tensorflow tutorial](https://www.tensorflow.org/tutorials/quickstart/beginner)
* [Regression using Neural Networks](https://www.analyticsvidhya.com/blog/2021/08/a-walk-through-of-regression-analysis-using-artificial-neural-networks-in-tensorflow/)
* [Hyperparameter tuning in DL](https://pyimagesearch.com/2021/05/31/hyperparameter-tuning-for-deep-learning-with-scikit-learn-keras-and-tensorflow/)