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

https://github.com/18520339/uts-intro-ci

Abalone Age classification using Self-constructing Neuro-Fuzzy Inference System (SONFIN)
https://github.com/18520339/uts-intro-ci

computational-intelligence fuzzy-logic fuzzy-neural-network

Last synced: about 1 month ago
JSON representation

Abalone Age classification using Self-constructing Neuro-Fuzzy Inference System (SONFIN)

Awesome Lists containing this project

README

          

# Abalone Age Classification using SONFIN

This repository contains my work for 2 major assessments of the **Introduction to Computational Intelligence** (CI) subject at the **University of Technology Sydney** (UTS) taught by [Dr. YK Wang](https://profiles.uts.edu.au/YuKai.Wang). Each assessment contains a `notebook` and a `pdf`, which includes a detailed explanation of the concepts and implementations involved, helping me achieve a perfect grade of **100/100** for the subject.

This project aims to classify [Abalone Age](https://www.kaggle.com/datasets/rodolfomendes/abalone-dataset) using [Self-constructing Neuro-Fuzzy Inference System](https://ieeexplore.ieee.org/document/660805) (SONFIN), which is a hybrid CI technique that combines neural networks and fuzzy logic principles, developed by [Distinguished Professor Chin-Teng Lin](https://profiles.uts.edu.au/Chin-Teng.Lin), a leading expert in CI and the coordinator of this subject.

## Part 1 - Data Exploration

Each dataset's entry/sample includes 8 features and 1 label, where the classes are ordered and not balanced. Below are the dataset's attribute heading descriptions I found from [UCI](http://archive.ics.uci.edu/ml/datasets/Abalone):

| Variable Name | Role | Type | Description | Units |
| -------------- | ------- | ----------- | --------------------------- | ----- |
| Sex | Feature | Categorical | M, F, and I (infant) | |
| Length | Feature | Continuous | Longest shell measurement | mm |
| Diameter | Feature | Continuous | Perpendicular to length | mm |
| Height | Feature | Continuous | With meat in shell | mm |
| Whole_weight | Feature | Continuous | Whole abalone | grams |
| Shucked_weight | Feature | Continuous | Weight of meat | grams |
| Viscera_weight | Feature | Continuous | Gut weight (after bleeding) | grams |
| Shell_weight | Feature | Continuous | After being dried | grams |
| Rings | Target | Integer | +1.5 gives the age in years | |

Here, I will demonstrate my understanding of the dataset and leverage the data visualization technique to explore the insight of the dataset:

- Introduce the dataset, including its history, number of samples, data type, size, value range, labels, etc.
- Identify the attribute type (qualitative, discreet/continuous quantitative, nominal, ordinal, interval, ratio) of each attribute in the dataset. Deliver this into a comprehensive table.
- Present relevant graphs/tables/figures to visualize the data with clear interpretations is crucial.

👉 Check the [part1_exploration.ipynb](./part1_exploration.ipynb) notebook and the [part1_exploration.pdf](./part1_exploration.pdf) report for more details.

## Part 2 - SONFIN Implementation and Experiments

Here, I will conduct experiments using [SONFIN](https://ieeexplore.ieee.org/document/660805) to classify the [Abalone Age dataset](https://www.kaggle.com/datasets/rodolfomendes/abalone-dataset) and present a comprehensive report of my findings:

1. Methodology (all tech details including but not limited to algorithms, parameters, data processing, feature extraction, training/testing, performance comparisons, statistic tests, etc.).
2. Evaluation (discuss and compare all findings).
3. Conclusion (Summarise your project, include future improvements).

Below are the results I got from 3 different settings of hyperparameters for SONFIN:

- Summary table:

| Metric | Setting 1 (2.538 min) | Setting 2 (2.517 min) | Setting 3 (2.211 min) |
| ---------------------- | ---------------------- | ---------------------- | ---------------------- |
| Training Accuracy | 0.6646 | **0.7779** | 0.7419 |
| Testing Accuracy | 0.6296 | **0.7326** | 0.7101 |
| Final Loss | 0.5072 | **0.3268** | 0.4138 |
| Best Loss | 0.5034 | **0.3214** | 0.4138 |
| Number of Rules | 50 | 75 | **34** |
| Precision (G1, G2, G3) | 0.3235, 0.9682, 0.1660 | 0.3811, 0.9672, 0.2258 | 0.3849, 0.9686, 0.2010 |
| Recall (G1, G2, G3) | 0.9483, 0.5884, 0.7358 | 0.9397, 0.7130, 0.6604 | 0.9224, 0.6850, 0.7358 |
| F1-Score (G1, G2, G3) | 0.4825, 0.7320, 0.2708 | 0.5423, 0.8209, 0.3365 | 0.5431, 0.8025, 0.3158 |
| Support (G1, G2, G3) | 116, 1035, 53 | 116, 1035, 53 | 116, 1035, 53 |

- Confusion matrix:

| True \ Predicted | Setting | 0 | 1 | 2 |
| ---------------- | ------- | ------------ | ------------ | ------------ |
| 0 | 1 | 110 (9.14%) | 6 (0.50%) | 0 (0.00%) |
| | 2 | 109 (9.05%) | 7 (0.58%) | 0 (0.00%) |
| | 3 | 107 (8.89%) | 9 (0.75%) | 0 (0.00%) |
| 1 | 1 | 230 (19.10%) | 609 (50.58%) | 196 (16.28%) |
| | 2 | 177 (14.70%) | 738 (61.30%) | 120 (9.97%) |
| | 3 | 171 (14.20%) | 709 (58.89%) | 155 (12.87%) |
| 2 | 1 | 0 (0.00%) | 14 (1.16%) | 39 (3.24%) |
| | 2 | 0 (0.00%) | 18 (1.50%) | 35 (2.91%) |
| | 3 | 0 (0.00%) | 14 (1.16%) | 39 (3.24%) |

👉 Check the [part2_implementation.ipynb](./part2_implementation.ipynb) notebook and the [part2_implementation.pdf](./part2_implementation.pdf) report for more details.