biolab / biolab/orange3

Multi-Targets for the ANN-Regression Model

Open
#6,725 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
5.7k
Forks
1.1k
Avg merge
12d 2h
Merged PRs (30d)
1

Description

**What's your use case?**

I have built an ANN based modelling toolkit from more than thirty years ago from scratch in ANSI-C . I used it for modelling industrial processes for many different real time applications in the oil and gas industry. I started porting some of this tools to Python and use them in the python widget, for example. Which I plan to convert into a custom widget or an explain-widget for ANN. (https://www.researchgate.net/publication/277006650_CALCULATING_THE_DEPENDENCY_OF_COMPONENTS_OF_OBSERVABLE_NONLINEAR_SYSTEMS_USING_ARTIFICIAL_NEURAL_NETWORKS) My explain-ANN- widget code supports MISO and MIMO ANN models.

So I want to model multi input multi output ANN models, which are allowed in the underlying scikit-learn library, but not in Orange3 itself, which makes many situations difficult to model and even not properly, when I simulate a MIMO model as several MISO models.

So I reverse engineered Orange3 cause of the lack of internal documentation and I managed to do some adjustments and additions within the Orange3 source to allow ANN-regression models to support multi targets. Which so far, works, but the test and train model widget, has an issue with multi dimensional results. **So I got stuck there and need some help or internal documentation.**

**What's your proposed solution?**

My did already most of the necessary changes to support multi targets for ANN. training a multi target with scikit-learn seems to work so far. The only change was to tell scikit-learn thath the ANN model will have more than 1 target (normally done through the n_outputs parameter) Test and score only handles single target regressions using a result vector, so the two dimensional array can be converted in "FORTRANstyle" to convert the 2 dim array into a vector. But also the training or test data array needs to be converted to a single vector.

Here I need help to learn about the internal data structure and idea behind the result data class.

**Are there any alternative solutions?**

Contributor guide

Open the contributing guide

Research direction

Start at the test and train model widget and inspect the result data class to understand how single-target regression results and training or test data are represented. Compare that flow with scikit-learn's multi-target output. Done means ANN regression supports multiple targets through training, testing, and scoring without mishandling the two-dimensional results.

Written by the indexing model from the issue text.

Assessment

Tech stack
numpy, python, scikit-learn
Domain
machine-learning
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.