Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/andr3w03/jernihin

Water Quality Prediction | SIB Dicoding Cycle 3 | C22-078 Capstone Project
https://github.com/andr3w03/jernihin

deployment flask machine-learning prediction python water-quality web-application

Last synced: about 1 month ago
JSON representation

Water Quality Prediction | SIB Dicoding Cycle 3 | C22-078 Capstone Project

Awesome Lists containing this project

README

        

# Jernihin

Click here to view Jernihin.


Jernihin Homepage


# Table of Content

- [Jernihin](#jernihin)
- [Table of Content](#table-of-content)
- [About Jernihin](#about-jernihin)
- [Background](#background)
- [Goal \& Aim](#goal--aim)
- [Installation \& Deployment](#installation--deployment)
- [Project Installation to Personal Virtual Environment](#project-installation-to-personal-virtual-environment)
- [Deploy Machine Learning Model with Flask on Railway](#deploy-machine-learning-model-with-flask-on-railway)
- [How Jernihin Work - Water Quality Classification](#how-jernihin-work---water-quality-classification)
- [Plans \& Realization](#plans--realization)
- [Repository \& Branch](#repository--branch)
- [Bibliography](#bibliography)
- [A. Dataset](#a-dataset)
- [B. Resources](#b-resources)
- [C. Academic Papers](#c-academic-papers)
- [D. References](#d-references)
- [Presentation](#presentation)
- [Demo Video](#demo-video)
- [Developers](#developers)


# About Jernihin

**Jernihin** is a machine learning program on an Indonesian-based website which is currently in the process of being developed by 4 developers from the SIB3 Capstone C22-078 Team in the **Machine Learning and Front-End Web Developer Program by SIB Dicoding X Kampus Merdeka Batch 3**.


## Background

A natural resource that has great potential for living things and continues to increase every year is water. According to the Data on Sustainable Development Goals (SDGs), Indonesia's water quality index for 2020 is 53.53, an increase from the previous year [[1]](#c-academic-paper-link "Sistem Prediksi Kualitas Air Yang Dapat Dikonsumsi Dengan Menerapkan Algoritma K-Nearest Neighbor"). Water measurements can be seen from chemical variables such as pH value, turbidity, phosphorus, nitrogen, oxygen, and others which play an important role in determining the quality of water. To find out the quality of the water needs to be monitored regularly [[2]](#c-academic-paper-link "Analisis Kualitas Air pada Jalur Distribusi Air Bersih di Gedung Baru Fakultas Ekonomi dan Manajemen Institut Pertanian Bogor").

One of the efforts to assist the water resources management strategy is to create a system that can monitor the quality of water content. Based on the problems above, we decided to build a website application using deep learning methods to predict water quality from several variables. This application is expected to provide another alternative in the management and monitoring of water quality.


## Goal & Aim

Based on the background described above, the goal and aim of this project are:

- This website aims to help the community as a utility to help decide and determine water quality. This feature is expected to help in better management of water resources.

- Jernihin has a feature that can help people to identify water quality based on the content in the water which consists of Fecal, Oxygen, pH, Sediment, Temperature, Nitrogen, Phosphorus, and Turbidity. This feature should be able to help its users to map and identify water quality.


## Installation & Deployment

This step will be explained briefly through two stages, consisting of:

1. Create the Flask framework on the project
2. Hosting process to Railway

---

### Project Installation to Personal Virtual Environment

The steps to create your virtual environment from this project is as follows:

1. Clone this Repository
```bash
git clone https://github.com/aNdr3W03/Jernihin.git
```

2. Install Python Virtual Environment
```bash
virtualenv venv
```

3. Install All the Requirements Inside "requirements.txt"
```bash
pip install -r requirements.txt
```

4. Import Flask App & Run Server
```bash
export FLASK_APP=app.py
flask run
```
or
```bash
python app.py
```

5. Stop the application program or server by `ctrl + c`.

---

### Deploy Machine Learning Model with Flask on Railway

1. Login to Railway account with Email or Github Acoount

2. Create New Project

3. Choose **Deploy form GitHub repo**

4. Choose respository project that you want to deploy


## How Jernihin Work - Water Quality Classification

1. Get user input from the HTML form in the form of Fecal, Oxygen, pH, Sediment, Temperature, Nitrogen, Phosphorus, and Turbidity. These parameters are extracted as replacement values which will be predicted later. The value range is between 0 and 100 for each input.

2. Scale the user input into the NumPy array for inference.

3. Predict the user input using the model that has been made. The model used is the Random Forest Classifier ensemble tree-based learning algorithm. This will return the result of an array of model predictions from all inputs that have been entered.

4. Output predictive labels in the form of obtaining real legible results. Then, this integer value is converted to a result string based on the label that matches the sign. The result of this process is a series of predictive outcomes, such as "Excellent", "Good", "Fair", "Marginal", and "Poor".

5. The final prediction result is returned to the prediction page to be displayed to the user.


## Plans & Realization

Risk management planning and possible problems that will occur during the work of this project was carried out using SWOT analysis, namely Strengths, Weaknesses, Opportunities, and Threats. This analysis was conducted to map and identify the strengths, weaknesses, opportunities, and threats that might occur during the development of this project.

For the initial document, a Gantt Chart has been made for tracking the beginning of the agreed-to-do list. Making a Gantt Chart done on ProjectLibre for details of the schedule can be seen in the Gantt Chart document on the following Gantt Chart link, or in the image below:


Jernihin Project Gantt Chart

Jernihin Project Gantt Chart


## Repository & Branch

This **Jernihin Repository** is divided into **2 branches**:

- **main** (master branch)

The `main` branch is used as an integration branch for front end display development and machine learning model development. The plan is to use the Flask framework to build and integrate websites and machine learning model as a whole website.

- **dev** (development branch)

The `dev` branch is used during the process of determining the initial resources or it can be called an environment where to try different things to be used in the project so that eventually when you have found the appropriate resources, the docs will be moved from dev to main branch.


## Bibliography

### A. Dataset


AmeriGEOSS Community Platform DataHub


AmeriGEOSS Community Platform DataHub
WQI Parameter Scores 1994-2013 Dataset

### B. Resources

In working on this project, several project or project resources are needed resources.

- **Language**



 


 


 


 

- **Framework**



 


 

- **Library**



 


 


 


 


 


 


 

- **Icons and Images**



 


 

- **Deployment**



 

### C. Academic Papers

- [1] H. Said, N. H. Matondang and H. N. Irmanda, "Sistem Prediksi Kualitas Air Yang Dapat Dikonsumsi Dengan Menerapkan Algoritma K-Nearest Neighbor," *Seminar Nasional Mahasiswa Ilmu Komputer dan Aplikasinya (SENAMIKA)*, vol. 3, no. 1, pp. 158-168, Apr. 2022. Accessed: Oct. 12, 2022. [Online]. Available: https://conference.upnvj.ac.id/index.php/senamika/article/view/2017

- [2] M. H. D. Barang dan S. K. Saptomo, "Analisis Kualitas Air pada Jalur Distribusi Air Bersih di Gedung Baru Fakultas Ekonomi dan Manajemen Institut Pertanian Bogor," *Jurnal Teknik Sipil dan Lingkungan (J-SIL)*, vol. 4, no. 1, pp. 13-24, Apr. 2019. Accessed: Oct. 12, 2022. doi: 10.29244/jsil.4.1.13-24. [Online]. Aivailable: https://journal.ipb.ac.id/index.php/jsil/article/view/23735

### D. References

- [3] Government of Newfoundland and Labrador, "*Drinking Water Quality Index.*" gov.nl.ca. https://www.gov.nl.ca/ecc/waterres/quality/drinkingwater/dwqi (accessed October 12, 2022).

- [4] Nutan, "*Deploy Machine Learning Model with Flask on Heroku.*" medium.com. https://medium.com/@nutanbhogendrasharma/deploy-machine-learning-model-with-flask-on-heroku-cd079b692b1d (accessed October 12, 2022).

- [5] A. Sridhar, "*How to Deploy Machine Learning Model using Flask (Iris Dataset) | Python.*" youtube.com. https://youtu.be/2LqrfEzuIMk (accessed November 23, 2022).

- [6] K. Naik, "*Deploy Machine Learning Model using Flask.*" youtube.com. https://youtu.be/UbCWoMf80PY (accessed November 23, 2022).


## Presentation


Jernihin Presentation Video


## Demo Video


Jernihin Demo Video


## Developers

Merdeka Belajar Kampus Merdeka (MBKM) 2022
SIB Dicoding Cycle 3
**C22-078 Capstone Team**

- **M319X0851** - Andrew Benedictus Jamesie
- **M319Y0854** - Cheliza Sriayu Simarsoit
- **M248X0512** - A. Gilang Aleyusta Savada
- **M182Y0310** - Ades Tikaningsih