# Orange (software)

Orange è un toolkit open source per la visualizzazione dei dati, l'apprendimento automatico e il data mining. È dotato di un front-end di programmazione visiva per l'analisi rapida e qualitativa dei dati e la visualizzazione interattiva dei dati

## Descrizione

Orange è un pacchetto software di programmazione visiva basato su componenti per la visualizzazione dei dati, l'apprendimento automatico, il data mining e l'analisi dei dati.
I componenti di Orange sono chiamati widget e vanno dalla semplice visualizzazione dei dati, alla selezione di sottoinsiemi e alla preelaborazione, alla valutazione empirica degli algoritmi di apprendimento e alla modellazione predittiva.
La programmazione visiva è implementata attraverso un'interfaccia in cui i flussi di lavoro vengono creati collegando widget predefiniti o progettati dall'utente, mentre gli utenti avanzati possono utilizzare Orange come libreria Python per la manipolazione dei dati e l'alterazione dei widget.

## Software

Orange è un pacchetto software open source rilasciato sotto licenza GPL. Le versioni fino alla 3.0 includono componenti di base in C++ con wrapper in Python disponibili su GitHub. Dalla versione 3.0 in poi, Orange utilizza comuni librerie open source Python per il calcolo scientifico, come numpy, scipy e scikit-learn, mentre la sua interfaccia utente grafica opera all'interno del framework Qt multipiattaforma.
L'installazione predefinita include una serie di algoritmi di apprendimento automatico, preelaborazione e visualizzazione dei dati in diversi set di widget (gestione dei dati, visualizzazione, classificazione, regressione, valutazione e apprendimento senza supervisione). Sono disponibili funzionalità aggiuntive come componenti aggiuntivi (bioinformatica, fusione di dati e estrazione di testo).
Orange è supportato su macOS, Windows e Linux e può anche essere installato dal repository Python Package Index (pip install Orange3).

## Caratteristiche

Orange è costituito da un'interfaccia canvas su cui l'utente posiziona i widget e crea un flusso di lavoro di analisi dei dati. I widget offrono funzionalità di base come la lettura dei dati, la visualizzazione di una tabella di dati, la selezione di funzionalità, l'addestramento dei predittori, il confronto di algoritmi di apprendimento, la visualizzazione di elementi di dati, ecc. L'utente può esplorare interattivamente le visualizzazioni o inserire il sottoinsieme selezionato in altri widget.
I principali concetti utilizzati sono:
* Canvas: front-end grafico per l'analisi dei dati
* Gruppi di Widgets:
** Data: widgets per la lettura dei dati, il filtraggio e la pulizia, il campionamento, l'immissione dei valori mancanti, la manipolazione e la selezione delle variabili
** Visualize: widgets per le forme di visualizzazione più comuni (box plot, istogramma, scatter plot) e multivariate (mosaic display, sieve diagram).
** Classify: un insieme di algoritmi di apprendimento automatico supervisionato per la classificazione
** Regression: un insieme di algoritmi di apprendimento automatico supervisionato per la regressione
** Evaluate: cross-validation, procedure basate sul campionamento, stime di affidabilità e valutazione dei metodi di previsione
** Unsupervised: un insieme di algoritmi di apprendimento automatico non supervisionato come clustering (k-means, hierarchical clustering) e tecniche di proiezione dei dati (scaling multidimensionale, principal component analysis, analisi delle corrispondenze).
** Add-ons:
*** Associate: widgets per ricercare gli insiemi di oggetti più frequenti e apprendimento delle associazioni
*** Bioinformatics: widgets per l'analisi dei dati genetici, l'arricchimento e l'accesso a librerie di dati genetici
*** Data fusion: widgets per la fusione di differenti data sets, la fattorizzazione tra matrici e l'esplorazione di fattori latenti
*** Educational: widgets per insegnare concetti di machine learning, come il k-means clustering, la regressione polinomiale, la stochastic gradient descent
*** Geo: widgets per operare su dati geospaziali
*** Image analytics: widgets per operare su immagini
*** Network: widgets per operare su grafi e analisi delle reti
*** Text mining: widgets per l'elaborazione del linguaggio naturale e su testi e documenti
*** Time series: widgets per l'analisi e la modellazione delle serie temporali
*** Spectroscopy: widgets per analizzare e visualizzare dataset (hyper)spettrali

## Obiettivi

Il programma fornisce una piattaforma per la selezione degli esperimenti, i sistemi di raccomandazione e la modellazione predittiva ed è utilizzato in biomedicina, bioinformatica, ricerca genomica e insegnamento. Nella scienza, viene utilizzato come piattaforma per testare nuovi algoritmi di apprendimento automatico e per implementare nuove tecniche in genetica e bioinformatica. Nell'istruzione, è stato utilizzato per insegnare metodi di machine learning e data mining a studenti di biologia, biomedicina e informatica.

## Estensioni

Vari progetti si basano su Orange estendendo i componenti principali con componenti aggiuntivi o utilizzando solo Orange Canvas per sfruttare le funzionalità di programmazione visiva implementate e la GUI.
* OASYS — ORange SYnchrotron Suite
* scOrange — single cell biostatistics
* Quasar — data analysis in natural sciences

## Storia

* Nel 1996, l'Università di Lubiana e l'Istituto Jožef Stefan hanno avviato lo sviluppo di ML*, un framework di apprendimento automatico in C++.
* Nel 1997 sono stati sviluppati collegamenti Python per ML*, che insieme ai moduli Python emergenti hanno formato un framework congiunto chiamato Orange.
* Negli anni successivi la maggior parte dei principali algoritmi per il data mining e l'apprendimento automatico sono stati sviluppati in C++ (il nucleo di Orange) o in moduli Python.
* Nel 2002 sono stati progettati i primi prototipi per creare un'interfaccia utente grafica flessibile, utilizzando i megawidgets Pmw Python.
* Nel 2003, l'interfaccia utente grafica è stata ridisegnata e riprogettata per il framework Qt utilizzando i collegamenti PyQt Python. È stato definito il framework di programmazione visuale ed è stato avviato lo sviluppo dei widget (componenti grafici della pipeline di analisi dei dati).
* Nel 2005 sono state create estensioni per l'analisi dei dati in bioinformatica.
* Nel 2008 sono stati sviluppati pacchetti di installazione basati su Mac OS X DMG e Fink.
* Nel 2009 sono stati creati e mantenuti oltre 100 widget.
* Dal 2009 Orange è in versione 2.0 beta e il sito web offre pacchetti di installazione basati sul ciclo di compilazione giornaliero.
* Nel 2012 è stata imposta una nuova gerarchia di oggetti, sostituendo la vecchia struttura basata su moduli.
* Nel 2013, un'importante riprogettazione della GUI.
* Nel 2015 esce Orange 3.0.
* Nel 2016 Orange è nella versione 3.3. Lo sviluppo utilizza un ciclo di rilascio stabile mensile.