Skip to content

Latest commit

Β 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Rainfall-Predication

🌧️ Rainfall Prediction using Random Forest

A machine learning project that predicts whether it will rain tomorrow based on today's weather metrics, using a Random Forest Classifier.

πŸ“‹ Table of Contents

About the Project

Dataset

Methodology

Technology Stack

Getting Started

Prerequisites

Installation

Usage

Model Evaluation

Contributing

License

Contact

Acknowledgments

πŸ“– About the Project

Predicting rainfall is a crucial and challenging task that impacts various sectors, including agriculture, transportation, and disaster management. This project aims to build a reliable predictive model to forecast whether it will rain on the next day.

We utilize a Random Forest Classifier, an ensemble learning method that operates by constructing a multitude of decision trees at training time.

For classification tasks, the mode of the classes (over all individual trees) is chosen as the final prediction. This method is robust, handles non-linear relationships well, and is less prone to overfitting compared to a single decision tree.

Key Features

Data Preprocessing: Cleaning and preparing weather data for modeling.

Exploratory Data Analysis (EDA): Visualizing data to understand relationships and patterns.

Model Training: Building and training a Random Forest model.

Model Evaluation: Assessing the model's performance using various metrics.

πŸ“Š Dataset

The model was trained on the "Weather in Australia Dataset from Kaggle". This dataset contains daily weather observations from numerous weather stations.

The primary features used for prediction include:

MinTemp

MaxTemp

Evaporation

Sunshine

WindGustDir

WindGustSpeed

WindDir9am

WindDir3pm

Humidity9am

Humidity3pm

Pressure9am

Pressure3pm

Cloud9am

Cloud3pm

Temp9am

Temp3pm

RainToday

The target variable is RainTomorrow (Yes/No).

πŸ› οΈ Methodology

The project follows a standard machine learning workflow:

Data Ingestion: Loading the raw dataset.

Data Preprocessing:

Handling missing values (e.g., imputation with mean, median, or mode).

Encoding categorical features (e.g., WindGustDir) using One-Hot Encoding or Label Encoding.

Converting the target variable (RainTomorrow) to a binary format (0 or 1).

Exploratory Data Analysis (EDA):

Analyzing feature distributions.

Visualizing correlations between features using a heatmap.

Understanding the relationship between features and the target variable.

Feature Scaling:

Scaling numerical features using StandardScaler to ensure all features contribute equally to the model.

Model Training:

Splitting the data into training (80%) and testing (20%) sets.

Initializing and fitting a RandomForestClassifier to the training data.

(Optional) Hyperparameter tuning using GridSearchCV or RandomizedSearchCV to find the best model parameters.

Model Evaluation:

Making predictions on the unseen test data.

Evaluating performance using a confusion matrix, accuracy score, precision, recall, and F1-score.

πŸ’» Technology Stack

This project is built using Python and the following key libraries:

Python 3.7+

Pandas: For data manipulation and analysis.

NumPy: For numerical operations.

Scikit-learn: For machine learning (Random Forest, train-test split, metrics).

Matplotlib: For data visualization.

Seaborn: For advanced data visualization.

Jupyter Notebook: For interactive development and analysis.

πŸš€ Getting Started

To get a local copy up and running, follow these simple steps.

Prerequisites

Make sure you have Python 3.7 or later installed on your system. You can download it from python.org.

You also need pip (Python's package installer), which usually comes with Python.

Installation

Create a virtual environment (Recommended): This keeps your project dependencies isolated.

python -m venv venv source venv/bin/activate # On Windows, use: venv\Scripts\activate

Install required packages: You will need to create a requirements.txt file. You can do this by running the following command in your project's directory after installing all the necessary packages manually (pip install pandas numpy scikit-learn ...):

pip freeze > requirements.txt

Once the file exists, anyone can install the dependencies:

pip install -r requirements.txt

πŸƒ Usage

You can run the model and see the predictions.

To train the model: (If you have a dedicated training script)

python train_model.py

To run the analysis (Jupyter Notebook): If your analysis is in a notebook, run Jupyter:

jupyter notebook

Then, open the Rainfall_Prediction.ipynb (or your notebook's name) file and run the cells.

To make a prediction: (If you have a prediction script)

python predict.py --input data/today.json

(Note: Adjust the above commands based on your project's actual file names and structure.)

🀝 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Fork the Project

Create your Feature Branch (git checkout -b feature/AmazingFeature)

Commit your Changes (git commit -m 'Add some AmazingFeature')

Push to the Branch (git push origin feature/AmazingFeature)

Open a Pull Request

πŸ“œ License

Distributed under the MIT License. See LICENSE for more information.

About

The model is able to predict weather using RandomForestClassifier

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages