SkillAgentSearch skills...

Igel

a delightful machine learning tool that allows you to train, test, and use models without writing code

Install / Use

/learn @nidhaloff/Igel

README

==== igel

|

.. image:: https://img.shields.io/pypi/v/igel?color=green :alt: PyPI :target: https://pypi.python.org/pypi/igel .. image:: https://img.shields.io/github/workflow/status/nidhaloff/igel/build :target: https://github.com/nidhaloff/igel/actions/workflows/build.yml :alt: GitHub Workflow Status .. image:: https://pepy.tech/badge/igel :target: https://pepy.tech/project/igel .. image:: https://readthedocs.org/projects/igel/badge/?version=latest :target: https://igel.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

.. image:: https://img.shields.io/pypi/wheel/igel :alt: PyPI - Wheel :target: https://pypi.python.org/pypi/igel

.. image:: https://img.shields.io/github/stars/nidhaloff/igel?style=social :alt: GitHub Repo stars :target: https://pypi.python.org/pypi/igel

.. image:: https://img.shields.io/twitter/url?url=https%3A%2F%2Ftwitter.com%2FNidhalBaccouri :alt: Twitter URL :target: https://twitter.com/NidhalBaccouri

|

A delightful machine learning tool that allows you to train/fit, test and use models without writing code

.. note:: I'm also working on a GUI desktop app for igel based on people's requests. You can find it under Igel-UI <https://github.com/nidhaloff/igel-ui/>_.

  • Free software: MIT license
  • Documentation: https://igel.readthedocs.io.

.. contents:: Table of Contents :depth: 3

| |

Introduction

The goal of the project is to provide machine learning for everyone, both technical and non-technical users.

I needed a tool sometimes, which I can use to fast create a machine learning prototype. Whether to build some proof of concept, create a fast draft model to prove a point or use auto ML. I find myself often stuck at writing boilerplate code and thinking too much where to start. Therefore, I decided to create this tool.

igel is built on top of other ML frameworks. It provides a simple way to use machine learning without writing a single line of code. Igel is highly customizable, but only if you want to. Igel does not force you to customize anything. Besides default values, igel can use auto-ml features to figure out a model that can work great with your data.

All you need is a yaml (or json) file, where you need to describe what you are trying to do. That's it!

Igel supports regression, classification and clustering. Igel's supports auto-ml features like ImageClassification and TextClassification

Igel supports most used dataset types in the data science field. For instance, your input dataset can be a csv, txt, excel sheet, json or even html file that you want to fetch. If you are using auto-ml features, then you can even feed raw data to igel and it will figure out how to deal with it. More on this later in the examples.

Features

  • Supports most dataset types (csv, txt, excel, json, html) even just raw data stored in folders
  • Supports all state of the art machine learning models (even preview models)
  • Supports different data preprocessing methods
  • Provides flexibility and data control while writing configurations
  • Supports cross validation
  • Supports both hyperparameter search (version >= 0.2.8)
  • Supports yaml and json format
  • Usage from GUI
  • Supports different sklearn metrics for regression, classification and clustering
  • Supports multi-output/multi-target regression and classification
  • Supports multi-processing for parallel model construction
  • Support for auto machine learning

Installation

  • The easiest way is to install igel using pip <https://packaging.python.org/guides/tool-recommendations/>_

.. code-block:: console

$ pip install -U igel

Models

Igel's supported models:

.. code-block:: console

    +--------------------+----------------------------+-------------------------+
    |      regression    |        classification      |        clustering       |
    +--------------------+----------------------------+-------------------------+
    |   LinearRegression |         LogisticRegression |                  KMeans |
    |              Lasso |                      Ridge |     AffinityPropagation |
    |          LassoLars |               DecisionTree |                   Birch |
    | BayesianRegression |                  ExtraTree | AgglomerativeClustering |
    |    HuberRegression |               RandomForest |    FeatureAgglomeration |
    |              Ridge |                 ExtraTrees |                  DBSCAN |
    |  PoissonRegression |                        SVM |         MiniBatchKMeans |
    |      ARDRegression |                  LinearSVM |    SpectralBiclustering |
    |  TweedieRegression |                      NuSVM |    SpectralCoclustering |
    | TheilSenRegression |            NearestNeighbor |      SpectralClustering |
    |    GammaRegression |              NeuralNetwork |               MeanShift |
    |   RANSACRegression | PassiveAgressiveClassifier |                  OPTICS |
    |       DecisionTree |                 Perceptron |                KMedoids |
    |          ExtraTree |               BernoulliRBM |                    ---- |
    |       RandomForest |           BoltzmannMachine |                    ---- |
    |         ExtraTrees |       CalibratedClassifier |                    ---- |
    |                SVM |                   Adaboost |                    ---- |
    |          LinearSVM |                    Bagging |                    ---- |
    |              NuSVM |           GradientBoosting |                    ---- |
    |    NearestNeighbor |        BernoulliNaiveBayes |                    ---- |
    |      NeuralNetwork |      CategoricalNaiveBayes |                    ---- |
    |         ElasticNet |       ComplementNaiveBayes |                    ---- |
    |       BernoulliRBM |         GaussianNaiveBayes |                    ---- |
    |   BoltzmannMachine |      MultinomialNaiveBayes |                    ---- |
    |           Adaboost |                       ---- |                    ---- |
    |            Bagging |                       ---- |                    ---- |
    |   GradientBoosting |                       ---- |                    ---- |
    +--------------------+----------------------------+-------------------------+

For auto ML:

  • ImageClassifier
  • TextClassifier
  • ImageRegressor
  • TextRegressor
  • StructeredDataClassifier
  • StructeredDataRegressor
  • AutoModel

Quick Start

The help command is very useful to check supported commands and corresponding args/options

.. code-block:: console

$ igel --help

You can also run help on sub-commands, for example:

.. code-block:: console

$ igel fit --help

Igel is highly customizable. If you know what you want and want to configure your model manually, then check the next sections, which will guide you on how to write a yaml or a json config file. After that, you just have to tell igel, what to do and where to find your data and config file. Here is an example:

.. code-block:: console

$ igel fit --data_path 'path_to_your_csv_dataset.csv' --yaml_path 'path_to_your_yaml_file.yaml'

However, you can also use the auto-ml features and let igel do everything for you. A great example for this would be image classification. Let's imagine you already have a dataset of raw images stored in a folder called images

All you have to do is run:

.. code-block:: console

$ igel auto-train --data_path 'path_to_your_images_folder' --task ImageClassification

That's it! Igel will read the images from the directory, process the dataset (converting to matrices, rescale, split, etc...) and start training/optimizing a model that works good on your data. As you can see it's pretty easy, you just have to provide the path to your data and the task you want to perform.

.. note::

This feature is computationally expensive as igel would try many
different models and compare their performance in order to find the 'best' one.

Usage

You can run the help command to get instructions. You can also run help on sub-commands!

.. code-block:: console

$ igel --help

Configuration Step ####################

First step is to provide a yaml file (you can also use json if you want)

You can do this manually by creating a .yaml file (called igel.yaml by convention but you can name if whatever you want) and editing it yourself. However, if you are lazy (and you probably are, like me :D), you can use the igel init command to get started fast, which will create a basic config file for you on the fly.

.. code-block:: console

"""
igel init --help


Example:
If I want to use neural networks to classify whether someone is sick or not using the indian-diabetes dataset,
then I would use this command to initialize a yaml file n.b. you may need to rename outcome column in .csv to sick:

$ igel init -type "classification" -model "NeuralNetwork" -target "sick"
"""
$ igel init

After running the command, an igel.yaml file will be created for you in the current working directory. You can check it out and modify it if you want to, otherwise you can also create everything from scratch.

  • Demo:

.. image:: ../assets/igel-init.gif


.. code-block:: yaml

    # model definition
    model:
        # in the type field, you can write the type of problem you want to solve. Whether regression, classification or clustering
        # Then, provide the algorithm you want to use on the data. Here I'm using the random forest algorithm
       
View on GitHub
GitHub Stars3.1k
CategoryData
Updated1mo ago
Forks209

Languages

Python

Security Score

100/100

Audited on Feb 22, 2026

No findings