A tree-structured hybrid model for classification of binary data.
Project description
NoiseCut
noisecut
is an easy-to-use Python package for the implementation of
tree-structured functional networks (FNs) as a model class for the
classification of binary data with prior knowledge on input features.
FNs can be viewed as modular neural networks, where the structure of
the links between the modules and the information flow from input variables
to the output variable is pre-determined. Here, each module of the FN is
simply represented as a black-box module. The identification of an FN, i.e.,
learning the input-output function of the FN, is then decomposed to the
identification of the individual interior black-box modules.
noisecut
can be used for any tree-structured FNs which has the below
criteria. It should have
- two hidden layer,
- arbitrary number of black-box modules in the first hidden layer,
- only one black-box module in the second hidden layer,
- each input feature goes only to one black-box module (tree structure).
Installation
Dependencies
- Python (>=3.9)
- numpy
- pandas
- scipy
- gurobipy
User installation
Bofore you can use NoiseCut package, you need to install noisecut
using pip:
$ pip install noisecut
Simple demo
Code snippet shown below summarizes a complete workflow, starting with the generation of synthetic data, proceeding to the division of data into training and testing sets, and concluding with model fitting and result evaluation.
from noisecut.model.noisecut_coder import Metric
from noisecut.model.noisecut_model import NoiseCut
from noisecut.tree_structured.data_manipulator import DataManipulator
from noisecut.tree_structured.sample_generator import SampleGenerator
# Synthetic data generation
gen_dataset = SampleGenerator(
[4, 4, 4], allowance_rand=True
) # [4,4,4] determines the number of inputs to each black box of the FN model
X, y = gen_dataset.get_complete_data_set()
# Add noise in data labeling. Train and test set split.
x_noisy, y_noisy = DataManipulator().get_noisy_data(X, y, percentage_noise=10)
x_train, y_train, x_test, y_test = DataManipulator().split_data(
x_noisy, y_noisy, percentage_training_data=50
)
# Training
mdl = NoiseCut(
n_input_each_box=[4, 4, 4]
) # 'n_input_each_box' should fit to the generated data
mdl.fit(x_train, y_train)
# Evaluation
y_pred = mdl.predict(x_test)
accuracy, recall, precision, F1 = Metric.set_confusion_matrix(y_test, y_pred)
Usage
Various use cases of the useful functions of noisecut
package are provided
as jupyter notebooks:
- Usage example of NoiseCut
- Synthetic data generation
- Noise-tolerant classification
- Classification with reduced training data
Examples show how to use the package to fit the model and investigate the predicted results in score, probability or simple binary output format.
License
noisecut
was created by Hedieh Mirzaieazar and Moein E. Samadi. It is
licensed under the terms of the GPLv3 license.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file noisecut-0.1.0.tar.gz
.
File metadata
- Download URL: noisecut-0.1.0.tar.gz
- Upload date:
- Size: 39.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39180391723118a2e8d2d8069d347b9bcc9db8e5a648641d22e10c488803fab7 |
|
MD5 | e4f8d4d426d99d17def1f9eecbe24a24 |
|
BLAKE2b-256 | c0981a688757050549bb5a6208dbd8e475fae8d08c41e80f262d9126cb2932d7 |
File details
Details for the file noisecut-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: noisecut-0.1.0-py3-none-any.whl
- Upload date:
- Size: 44.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd1ec572a8c64bfeba0294af7bd950384f45a581eb2ad7df6a2eca15b046550f |
|
MD5 | 7d4b93e358abaee5db9638f2573796b3 |
|
BLAKE2b-256 | d9f54dcb63354b5647c287af3abd8850d7832ad81d87ceaaaa0e315dbf2af90b |