Sei sulla pagina 1di 86

Ripasso Generale

e creare HTML/PDF e GUI

Renato Mainetti
Introduzione a Matlab

Concetti importanti:

• Cos’ è Matlab
• Variabili
• Script
• Funzione
• Salvataggio WorkSpace

Ripasso Generale - GUI e HTML/PDF - Lezione


2
11
Matlab questo sconosciuto
(abbreviazione di Matrix Laboratory)
• Cos’è ?
• E’ un ambiente (software) nato per il calcolo numerico e
l'analisi statistica.
• A cosa serve?
• Permette di eseguire calcoli matematici, simulazioni, analisi
dei dati, visualizzazione di grafici e sviluppo di algoritmi.
• Cosa ci faremo?
• Useremo alcune funzioni di base e alcuni tool-box per
avvicinarci al mondo dell’IA.
• Come scaricarlo e usarlo anche a casa?
• Studenti UNIMI hanno la possibilità di scaricarlo e installarlo
su un PC per uso personale.
• http://www.unimi.it/ateneo/80207.htm guida per
installazione
Ripasso Generale - GUI e HTML/PDF - Lezione
3
11
Cos’è una variabile?

Una variabile è una zona di memoria identificata attraverso un


nome(combinazione lettere e digit) in cui è possibile memorizzare delle
informazioni (numeri, array, oggetti).
Ripasso Generale - GUI e HTML/PDF - Lezione
4
11
Assegnamento di una variabile

• In matlab l’operatore di assegnamento è =


• Per creare una variabile eseguirò da riga di
comando:
>> var1 = 10
• Posso assegnare anche una formula:
>> var2 = (3-1)*5 + var1
• La variabile, una volta assegnata compare nel
Workspace.
• E’ ora possibile richiamare il valore contenuto nella
variabile, utilizzandola in formule e programmi.
Ripasso Generale - GUI e HTML/PDF - Lezione
5
11
Esempio di creazione
esecuzione script
• Creazione:

Ripasso Generale - GUI e HTML/PDF - Lezione


6
11
Esempio di creazione
esecuzione script
• Creazione:

disp('Questo è il nostro primo script in Matlab')


disp('Di solito però si inizia con "Hello World!"')
a = input('Inserisci un numero da elevare al quadrato: ');
b = a*a;
disp(['Il risultato è: ' num2str(b)])

N.B: Se non conosciamo un comando, possiamo usare help.


Esempio:
>> help input

Ripasso Generale - GUI e HTML/PDF - Lezione


7
11
Esempio di creazione
esecuzione script
• Esecuzione:

>> firstScript
Questo è il nostro primo script in Matlab
Di solito però si inizia con "Hello World!"
Inserisci un numero da elevare al quadrato: 3
Il risultato è: 9

N.B: Verificare il folder attuale, se siamo nel folder


dove è contenuto il file .m è possibile usare la
funzione di autocompletamento. (tab)
Ripasso Generale - GUI e HTML/PDF - Lezione
8
11
E se usassimo una funzione
invece di uno Script?
• Una funzione può ricevere dei dati in ingresso e
restituirne in uscita.
• E’ più flessibile

• Una funzione è composta da:


Function a = triarea(b,h)

input
Parola chiave output Nome funzione

Ripasso Generale - GUI e HTML/PDF - Lezione


9
11
La funzione:
function a = triarea(b,h)
a = (b*h)/2;

Può essere richiamata da riga di comando:

>> A = triarea(5,6);

N.B: Attraverso i commenti nella funzione è possibile scrivere la documentazione


che viene mostrata attraverso il comando help

Ripasso Generale - GUI e HTML/PDF - Lezione


10
11
Salviamo il WorkSpace
• Può capitare di aver eseguito diverse operazioni e
aver creato e memorizzato un elevato numero di
variabili.
• Se spegniamo matlab senza salvare il workspace
queste informazioni però vanno perse.
• Per salvare il workspace corrente:

Viene generato un
file .mat

Ripasso Generale - GUI e HTML/PDF - Lezione


11
11
Introduzione alla programmazione

Concetti importanti:

• Programmazione
• Algoritmo
• Programmazione strutturata
• Sequenziale
• Condizionale (IF/ELSE - SWITCH)
• Iterativa (FOR - WHILE)

Ripasso Generale - GUI e HTML/PDF - Lezione


12
11
Cos’è la programmazione

La programmazione, in informatica, è l'insieme delle


attività e tecniche che una o più persone
specializzate, programmatori o sviluppatori
(developer), svolgono per creare un programma,
ossia un software da far eseguire ad un computer,
scrivendo il relativo codice sorgente in un certo
linguaggio di programmazione. (cit. Wikipedia)

Ripasso Generale - GUI e HTML/PDF - Lezione


13
11
Cos’è un algoritmo
Un algoritmo è un procedimento che risolve un
determinato problema attraverso un numero finito di
passi elementari.
L'algoritmo è un concetto fondamentale dell'informatica,
anzitutto perché è alla base della nozione teorica di
calcolabilità: un problema è calcolabile quando è
risolvibile mediante un algoritmo.
L'algoritmo è un concetto cardine della fase di
programmazione dello sviluppo di un software: preso un
problema da automatizzare, la programmazione
costituisce essenzialmente la traduzione o codifica di un
algoritmo per tale problema in programma, scritto in un
certo linguaggio, che può essere quindi effettivamente
eseguito da un calcolatore. (cit: Wikipedia)
Ripasso Generale - GUI e HTML/PDF - Lezione
14
11
Testiamo il risultato:
Punti chiave:
• Sequenza di istruzioni elementari per raggiungere
uno scopo.
• Le istruzioni vanno eseguite nel giusto ordine.
• Il nostro senso comune non coincide con quello del
computer.
• E’ possibile che esistano più vie per arrivare al
risultato desiderato.

Ripasso Generale - GUI e HTML/PDF - Lezione


15
11
Programmazione strutturata:
Il Teorema di Bohm-Jacopini afferma:
“qualsiasi algoritmo può essere definito usando esclusivamente le
strutture di sequenza, di selezione e di iterazione”.

Sequenziale Condizionale Iterativa

https://en.wikibooks.org/wiki/MATLAB_Programming/Control_Flow
Ripasso Generale - GUI e HTML/PDF - Lezione
16
11
IF - IF/ELSE :
Condizionale

PROBLEMA 1: Dati due numeri, mostrare se il primo è


maggiore o minore del secondo. (usare solo IF)

PROBLEMA 2: Dati due numeri, mostrare se il primo è


maggiore o minore del secondo. (usare IF/ELSE).
Cosa abbiamo guadagnato ad usare ELSE ?

PROBLEMA 3: Dati due numeri, mostrare se il primo è


maggiore o minore del secondo e contemplare il caso
di uguaglianza. (usare IF/ELSEIF/ELSE).

Ripasso Generale - GUI e HTML/PDF - Lezione


17
11
SWITCH:
Condizionale n = input('Inserisci un numero: ');

switch n
case -1
disp('Uno Negativo')
case 0
disp('Zero')
case 1
disp('Uno Positivo')
otherwise
disp('Altro valore')
end

PROBLEMA 4: Scrivere un programma che mostri il colore attuale


di un semaforo. Il programma riceve in input un valore tra {1,2,3} e
in base al numero ricevuto scrive il nuovo colore del semaforo.
{Rosso,Giallo,Verde}

N.B: se usiamo «otherwise» anche altri numeri andranno bene per il verde.
Ripasso Generale - GUI e HTML/PDF - Lezione
18
11
FOR:
Iterativa
for i = 1:5
…fai qualcosa…
end

PROBLEMA 5: Scrivere un programma che mostri il colore attuale


di un semaforo per 5 volte. Il programma riceve in input un valore
tra {1,2,3} e in base al numero ricevuto scrive il nuovo colore del
semaforo. {Rosso,Giallo,Verde}

Ripasso Generale - GUI e HTML/PDF - Lezione


19
11
WHILE:
Iterativa while n>0
…fai qualcosa…
end

PROBLEMA 6: Scrivere un programma che mostri il colore attuale


di un semaforo per infinte volte, a meno che non intervenga una
condizione di arresto. Il programma riceve in input un valore tra
{1,2,3} e in base al numero ricevuto scrive il nuovo colore del
semaforo. {Rosso,Giallo,Verde}

N.B: usiamo «otherwise» come condizione di arresto.


Ripasso Generale - GUI e HTML/PDF - Lezione
20
11
FSM – Macchine a stati finiti

Concetti importanti:

• Simulazione di un oggetto/concetto complesso


• Stato iniziale
• Stati della macchina
• Transizioni
• STG – Grafico delle transizioni di stato
• STT – Tabella delle transizioni di stato

Ripasso Generale - GUI e HTML/PDF - Lezione


21
11
FSM

Ripasso Generale - GUI e HTML/PDF - Lezione


22
11
Matlab cosa ci regala ?
StateFlow: http://it.mathworks.com/products/stateflow/

Stateflow® consente di modellare il modo in cui il sistema reagisce a eventi,


condizioni temporali e segnali di stimolo esterni.

Ripasso Generale - GUI e HTML/PDF - Lezione


23
11
FSM Matlab On-Off
Aggiunge un nuovo stato

Stato iniziale

Componenti evidenziati in rosso da sinistra verso destra:


• «Constant» Valori costanti -> utilizzati come valore di input della macchina
• «switch» Interruttore -> seleziona quale valore inviare alla macchina
• «Chart» Rappresenta la nostra FSM, contiene stati e transizioni (doppio click per entrare
nella vista interna alla FSM)
Internamente a «Chart» troviamo:
• Stato -> rappresenta uno stato della fsm, può essere aggiunto con il bottone a forma
quadrata sulla barra di sinistra.
• Transizioni -> dato lo stato attuale della fsm, se la condizione di verità si verifica modifica
lo stato della FSM e passa ad un nuovo stato (indicato dalla freccia)
• Stato iniziale del sistema -> si può selezionare con il tasto freccia nel menù a sinistra
Ripasso Generale - GUI e HTML/PDF - Lezione
24
11
FSM Tamagotchi
• Cambiamo gli stati d’animo del tamagotchi

Grafo delle
transizioni di stato

Ripasso Generale - GUI e HTML/PDF - Lezione


25
11
STT – Tabella Transizioni Stato

Se invece di «Chart» usiamo la TTS, inseriamo le stesse informazioni utilizzate


per costruire lo STG ma in forma differente. Nella tabella a sinistra «States»
possiamo aggiungere nuovi stati, e sulla destra in «transition» possiamo
aggiungere condizioni di verità e il nuovo stato in cui andare al verificarsi di
quella condizione. Matlab è in grado di ricostruire
Ripasso Generale - GUI e HTML/PDF - Lezione
26
11
Fuzzy system

Concetti importanti:

• Fuzzificazione
• Fuzzy associative memory (FAM - regole)
• Defuzzificazione

Ripasso Generale - GUI e HTML/PDF - Lezione


27
11
Fuzzy Toolbox

Fuzzy Logic Toolbox™ fornisce funzioni, applicazioni e un blocco Simulink per


progettare, implementare e testare un sistema basato sulla logica fuzzy.

Questo toolbox ci permette di modellare sistemi complessi, usando delle semplici


regole logiche che vanno poi inserite nel Sistema di inferenza fuzzy.

Questo toolbox può essere usato in modalità stand alone, è possibile costruire
un’app ed infine è anche possibile realizzare un blocco Simulink per utilizzarlo in una
simulazione di processo dinamico.

Ripasso Generale - GUI e HTML/PDF - Lezione


28
11
Componenti sistema Fuzzy:
FAM – regole di decisione

• Cibo • Mancia
• servizio

Ripasso Generale - GUI e HTML/PDF - Lezione


29
11
Definiamo il problema:
Abbiamo cenato al ristorante, prima di andare via vogliamo lasciare una mancia al
cameriere ma non sappiamo quanto lasciare.
Proviamo a basarci su queste due considerazioni:

• La qualità del cibo


• Da 0 = pessimo
• A 10 = paradisiaco
• La qualità del servizio
• Da 0 = film horror
• A 10 = impeccabile

Ripasso Generale - GUI e HTML/PDF - Lezione


30
11
Modifichiamo gli elementi del
sistema fuzzy:
Eseguendo doppio click su un oggetto tra quelli citati si apre
una nuova finestra che ne permette la modifica.
Per esempio:
doppio click su input1 aprirà una nuova finestra, dal titolo Membership function
editor, che ci permetterà di modificare l’input input0.

Ripasso Generale - GUI e HTML/PDF - Lezione


31
11
Vediamo i risultati:
View -> Surface View -> Rules

Ripasso Generale - GUI e HTML/PDF - Lezione


32
11
Vettori, matrici e grafi

Concetti importanti:

• Vettore
• Matrice
• Grafo
• Albero

Ripasso Generale - GUI e HTML/PDF - Lezione


33
11
Vettore
In informatica:
Si può immaginare un vettore(array) come una sorta di contenitore , le
cui caselle sono dette celle dell'array stesso. Ciascuna delle celle si
comporta come una variabile tradizionale che rappresenta
un elemento dell'array; tutte le celle sono variabili di uno stesso tipo
preesistente, detto tipo base dell'array. Si parlerà perciò di tipi come
"array di interi", "array di stringhe", "array di caratteri" . (wikipedia)

4 2 9 7 1

Ripasso Generale - GUI e HTML/PDF - Lezione


34
11
Vettori in Matlab:
Possono essere inseriti come righe o come colonne:
Riga:
vetRiga = [1 2 3 4 5];
vetRiga = [1,2,3,4,5];
Colonna:
vetColonna = [1;2;3;4;5];

Proviamo ora ad inserire un array da 1 a 20.


Ci vuole tempo vero?
E se vi dicessi che ci serve un array di 1000 elementi?

Ripasso Generale - GUI e HTML/PDF - Lezione


35
11
Matrici:
Sono fondamentalmente vettori bidimensionali
Matrice m x n
N colonne

a1,1 a1,2 a1,3


a2,1 a2,2 a2,3
m righe

a3,1 a3,2 a3,3


am,n
Ripasso Generale - GUI e HTML/PDF - Lezione
36
11
Matrici in matlab:
Inseriamo una matrice in matlab:

mat = [1 2 3; 4 5 6; 7 8 9];

Stiamo sfruttando le due tecniche usate prima,


ovvero inserimento righe e inserimento colonne
contemporaneamente.

Ripasso Generale - GUI e HTML/PDF - Lezione


37
11
GRAFO:
Un grafo è un insieme di elementi detti nodi o
vertici che possono essere collegati fra loro da linee
chiamate archi o lati o spigoli. (wiki)

Si distinguono due tipi basilari di grafi, i grafi orientati (o grafi diretti)


e i grafi non orientati (o grafi indiretti).
Un "grafo non orientato" è un insieme di vertici e archi dove la connessione
A - B ha lo stesso significato della connessione B – A (non è importante la
direzione)
Ripasso Generale - GUI e HTML/PDF - Lezione
38
11
ALBERO:
Un albero è un grafo: non orientato nel quale due
vertici qualsiasi sono connessi da uno e un solo
cammino (grafo non orientato, connesso e privo di cicli).
(wiki)

Ripasso Generale - GUI e HTML/PDF - Lezione


39
11
Mappa semplificata della
Romania

Ripasso Generale - GUI e HTML/PDF - Lezione


40
11
Con lo script indicato e
Matlab 2015b o 2016a
Otteniamo un grafo così:

Possiamo ricercare la strada più breve tra due nodi ed evidenziarla.


Ripasso Generale - GUI e HTML/PDF - Lezione
41
11
Decision-tree

Concetti importanti:

• Decisione e strumenti di supporto alla decisione


• Alberi di decisione in teoria delle decisioni
• Alberi di decisione nel machine learning

Ripasso Generale - GUI e HTML/PDF - Lezione


42
11
Riflessioni:
• Una decisione è una scelta tra alternative. La decisione
viene presa stimando l’esito delle altre alternative
• Supportare in una decisione significa aiutare le persone
ad accumulare intelligenza su quel problema, trovare
alternative e prendere una decisione.

Ripasso Generale - GUI e HTML/PDF - Lezione


43
11
Elementi di una decisione razionale:

• Identificare il goal che vogliamo raggiungere con quella


decisione
• Identificare tutte le opzioni disponibili
• Valutare il possibile risultato di ogni opzione
• Scegliere quale opzione è la migliore
• …Eseguire la scelta

Ripasso Generale - GUI e HTML/PDF - Lezione


44
11
Alberi di Decisione (Wikipedia)
Nella teoria delle decisioni (per esempio nella gestione dei rischi), un albero di
decisione è un grado di decisioni e delle loro possibili conseguenze, (incluso i
relativi costi, risorse e rischi) utilizzato per creare un 'piano di azioni' (plan) mirato
ad uno scopo (goal). Un albero di decisione è costruito al fine di supportare
l'azione decisionale (decision making).

Nel machine learning un albero di decisione è un modello predittivo, dove ogni


nodo interno rappresenta una variabile, un arco verso un nodo figlio rappresenta
un possibile valore per quella proprietà e una foglia il valore predetto per la
variabile obiettivo a partire da i valori delle altre proprietà, che nell'albero è
rappresentato dal cammino (path) dal nodo radice (root) al nodo foglia.
Normalmente un albero di decisione viene costruito utilizzando tecniche di
apprendimento a partire dall'insieme dei dati iniziali (data set), il quale può essere
diviso in due sottoinsiemi: il training set sulla base del quale si crea la struttura
dell'albero e il test set che viene utilizzato per testare l'accuratezza del modello
predittivo così creato.

Ripasso Generale - GUI e HTML/PDF - Lezione


45
11
Decision-Making
Fasi e Passi
• Intelligenza
• Raccolta informazioni e dati
• Riconoscimento del problema
• Design
• Formulazione del modello
• Analisi del modello
• Scelte
• Generazione e Valutazione
• Selezione

Ripasso Generale - GUI e HTML/PDF - Lezione


46
11
Albero di decisione
(Teoria delle decisioni)

50% Successo 100 Euro

50%(100) + 50%(-30) = 35 Euro

50% Fallimento -30 Euro

50% Successo 90 Euro

50%(90) + 50%(-10) = 40 Euro

50% Fallimento -10 Euro

Ripasso Generale - GUI e HTML/PDF - Lezione


47
11
Introduzione alla probabilità
Inferenza Bayesiana
Concetti importanti:

• Legge dei grandi numeri


• Probabilità marginale
• Probabilità condizionata
• Inferenza Bayesiana
• Variabili aleatorie discrete e continue
• PDF - CDF

Ripasso Generale - GUI e HTML/PDF - Lezione


48
11
Legge dei Grandi Numeri
La legge dei grandi numeri, detta anche legge
empirica del caso oppure teorema di Bernoulli
descrive il comportamento della media di una
sequenza di n variabili casuali indipendenti e
caratterizzate dalla stessa distribuzione di probabilità
(n misure della stessa grandezza, n lanci della stessa
moneta ecc.) al tendere ad infinito della numerosità
della sequenza stessa (n) (wiki)

Ripasso Generale - GUI e HTML/PDF - Lezione


49
11
Testa o Croce?
Vogliamo realizzare una funzione in Matlab che ci
permetta di simulare il processo di tirare una moneta e
analizzarne l’esito.

Proviamo a capire cosa fa la funzione di Matlab rand:


>> help rand

Ripasso Generale - GUI e HTML/PDF - Lezione


50
11
rand:
Uniformly distributed pseudorandom numbers.
Eseguendo il comando:
>>rand
Otteniamo un numero casuale tra (0 e 1). (intervallo aperto)

Matlab in pratica suddivide l’intervallo tra 0 e 1


uniformemente, restituendo un valore di questo
intervallo. Tutti i sotto intervalli sono equiprobabili.

Ripasso Generale - GUI e HTML/PDF - Lezione


51
11
Perché pseudo-random?
Perché i numeri sono generati da un algoritmo
deterministico che produce una sequenza.

Proviamolo!
L’algoritmo di generazione può essere inizializzato
con un seme (seed).
Normalmente matlab all’avvio setta il seed a 0.
Per vedere l’attuale valore del seed eseguiamo:
>> rng

Ripasso Generale - GUI e HTML/PDF - Lezione


52
11
Funzione moneta:

Dopo aver visto come estrarre una sequenza di


numeri casuali tra 0 e 1, ci chiediamo come sia
possibile trasformare ogni evento di estrazione in un
risultato che indichi Testa o Croce.

Idee ?

Ripasso Generale - GUI e HTML/PDF - Lezione


53
11
Simulazione del tiro di dadi
Proviamo ora a simulare il tiro di due dadi, per poter
analizzare empiricamente le probabilità legate a
questo evento.

Come possiamo fare?


Idee su qualche funzione di arrotondamento?
La funzione round?

Ripasso Generale - GUI e HTML/PDF - Lezione


54
11
Statistiche volatili:
Marroni Bianchi

Piccioni 30% 20%

Gabbiani 10% 40%

Ripasso Generale - GUI e HTML/PDF - Lezione


55
11
Statistiche volatili:
Marginale specie
Marroni Bianchi (somma elementi riga)

Piccioni 30% 20% 50%

Gabbiani 10% 40% 50%

Marginale 40% 60%


colore
(somma elementi colonna)

Ripasso Generale - GUI e HTML/PDF - Lezione


56
11
Probabilità condizionata e congiunta:
P(a | b) = P(a AND b) / P(b) P(a AND b) è probabilità congiunta

• Vediamo un volatile di un colore ma non sappiamo


riconoscere la specie… cosa facciamo ?
• Probabilità condizionate di specie dato il colore :
Marroni Bianchi

Piccioni 75% 33%

Gabbiani 25% 67%

Ripasso Generale - GUI e HTML/PDF - Lezione


57
11
Distribuzione di probabilità:
(probability distribution function)
Ci permette di descrivere in termini probabilistici un
fenomeno aleatorio nel tempo, cioè che sia caratterizzato
da una variabile aleatoria. (wiki)

• Per prima cosa iniziamo a distinguere il caso discreto dal


caso continuo.
• Variabile aleatoria discreta -> moneta, dadi, etc.
• Variabile aleatoria continua -> altezza persone, dimensione pesce, etc.

Ripasso Generale - GUI e HTML/PDF - Lezione


58
11
Variabile aleatoria discreta

• L’insieme dei possibili valori(esito) è finito,


numerabile, discreto.

• Nel lancio della moneta ho due eventi possibili


(T/C) Pt = ½; Pc = ½;

• Nel lancio dei dadi ho 6 eventi possibili


(1,2,3,4,5,6) Pn = 1/6;

Ripasso Generale - GUI e HTML/PDF - Lezione


59
11
Funzione di ripartizione
(cumulative distribution function)
• Ci aiuta a studiare le distribuzioni di probabilità
• Esempio del dado:

F(X1) = 1/6
F(X2) = 1/6 + 1/6 = 2/6
F(X3) = 1/6 + 1/6 + 1/6 = 3/6
F(X4) = 1/6 + 1/6 + 1/6 + 1/6 = 4/6
F(X5) = 1/6 + 1/6 + 1/6 + 1/6 + 1/6 = 5/6
F(X6) = 1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6 = 6/6

Somma dei valori precedenti o uguali a un dato valore associato ad un


blocco della partizione. (Somma totale = 1)

Ripasso Generale - GUI e HTML/PDF - Lezione


60
11
Passiamo ora al caso continuo:
(variabile aleatoria continua)

• Abbiamo un numero infinito di probabilità per


tutti i valori compresi in un intervallo.

Ripasso Generale - GUI e HTML/PDF - Lezione


61
11
Calcoliamo probabilità con
matlab di distribuzione
Normale/Gaussiana
%creiamo vettore uniforme tra -4 e 4 con passo 0.01
>> x = -4:0.01:4;

%creiamo la pdf con il comando normpdf, media 0


varianza 1
>>y = normpdf(x,0,1)

%plot della gaussiana


>>plot(x,y)

Ripasso Generale - GUI e HTML/PDF - Lezione


62
11
Data Import e Data cleaning

Concetti importanti:

• Formato dei file importabili in matlab


• Pulizia e consistenza dei dati

Ripasso Generale - GUI e HTML/PDF - Lezione


63
11
Formato dei dati
(i più comuni)

• File di testo
• CSV (comma separated values)
• Da Fogli di calcolo (es. Excel)
• Da Database
• Da File Binari (formati proprietari, immagini, audio, etc)

Ripasso Generale - GUI e HTML/PDF - Lezione


64
11
Pulizia dei dati:
• Attraverso il tool:
IMPORT DATA

• Possiamo decidere se importare ogni colonna in


singole variabili.
• Possiamo decidere se importare i dati in un oggetto
tabella.
• Usiamo l’auto completamento «tab» per vedere il
contenuto dell’oggetto tabella.

Ripasso Generale - GUI e HTML/PDF - Lezione


65
11
Dati mancanti (import data)
• Matlab ci fornisce la possibilità di inserire NaN in
caso di valori assenti
• Di non considerare la riga dove mancano dati
• Di non considerare la colonna dove mancano dati

Ripasso Generale - GUI e HTML/PDF - Lezione


66
11
Apprendimento
Supervisionato e Non

http://quantdare.com/2016/03/machine-learning-a-brief-breakdown/
Ripasso Generale - GUI e HTML/PDF - Lezione
67
11
Apprendimento
Supervisionato e Non

Supervisionato: forniamo input e output


Non supervisionato: forniamo solo input

Ripasso Generale - GUI e HTML/PDF - Lezione


68
11
Partizionamento spaziale
Quad-tree e k-means
Concetti importanti:

• Algoritmo di partizionamento ricorsivo


• Apprendimento non supervisionato
• Algoritmo k-means, calcolo dei centroidi
• Clustering

Ripasso Generale - GUI e HTML/PDF - Lezione


69
11
Partizione e Clustering
Quad-tree e K-Means

Renato Mainetti
Quad-tree
• Proviamo a suddividere usando come criterio il colore.
• Un’immagine in Matlab è una matrice.
• Se l’immagine è in toni di grigio allora viene rappresentata
da una matrice monodimensionale, il numero di righe e di
colonne equivale alla dimensione in pixel dell’immagine
(larghezza = colonne, altezza=righe)
• Se l’immagine è a colori allora sarà una matrice
tridimensionale. L’immagine infatti avrà 3 canali:
• Rosso (Red)
• Verde (Green)
• Blue (Blue)

Ripasso Generale - GUI e HTML/PDF - Lezione


71
11
Quad-tree

• Impiegato in ambito di imaging: (compressione,


segmentazione, ecc.)

Ripasso Generale - GUI e HTML/PDF - Lezione


72
11
kMeans
• Generiamo un dataset e proviamo ad applicare
questo metodo.

• Il file: kmean.m

Ripasso Generale - GUI e HTML/PDF - Lezione


73
11
Classificazione e validazione

Concetti importanti:

• Decision-tree
• Reti neurali
• Predire classe, dato un vettore di input
• Validazione: training e test, cross-fold

Ripasso Generale - GUI e HTML/PDF - Lezione


74
11
Pipeline: cosa fare per
classificare
Dati Noti (Predittori)
1) Modello
Risposte Note (Etichette)

Modello
2) Predizione Risposte
Nuovi dati (non etichettati)

Ripasso Generale - GUI e HTML/PDF - Lezione


75
11
Proviamo a creare dei
decision-tree:
(usando come dati di addestramento le funzioni logiche booleane AND e XOR)

AND XOR

…ma prima rapido ripasso della logica booleana…


Ripasso Generale - GUI e HTML/PDF - Lezione
76
11
Addestramento
• Classificare i fiori in funzione della dimensioni di
petali e sepali:

Ripasso Generale - GUI e HTML/PDF - Lezione


77
11
Perceptrone e reti neurali
Concetti importanti:

• Dal neurone al perceptrone (modello matematico)


• Significato geometrico dell’addestramento
• Funzioni linearmente separabili e non
• Addestramento
• Classificazione

Ripasso Generale - GUI e HTML/PDF - Lezione


78
11
Dal Neurone al Perceptrone

Perceptrone: costrutti matematici che in qualche


misura imitano le proprietà dei neuroni viventi.

• Si esegue una "somma pesata" (integrazione) dei


vari input provenienti dai dendriti.
• Se la loro somma è superiore ad una certa soglia
allora il neurone/perceptrone scarica.
Ripasso Generale - GUI e HTML/PDF - Lezione
79
11
Funzionamento perceptrone

Z = 𝑠𝑔𝑛(෍ 𝑥𝑖 𝑤𝑖 − 𝜃)
i=1

• Somma degli input pesati a cui sottraggo il valore di


soglia 𝜃.
• Se il risultato è maggiore di zero, il perceptrone si
attiva.

Ripasso Generale - GUI e HTML/PDF - Lezione


80
11
Addestramento perceptrone
(geometricamente…)
In pratica stiamo modificando i parametri della retta che
divide i due insiemi linearmente separabili.

Ripasso Generale - GUI e HTML/PDF - Lezione


81
11
AND, OR e XOR

U1 and U2 U1 or U2 U1 xor U2

U1 U2 Y U1 U2 Y U1 U2 Y
0 0 0 0 0 0 0 0 0
0 1 0 0 1 1 0 1 1
1 0 0 1 0 1 1 0 1
1 1 1 1 1 1 1 1 0
Y sempre falso (0) a Y sempre vero (1) a Y sempre falso (0) quando
meno che U1 e U2 meno che U1 e U2 siano U1 = U2
siano entrambe vere(1) entrambe false(0) Y sempre vero (1) quando
U1 ≠ U2

Ripasso Generale - GUI e HTML/PDF - Lezione


82
11
Pubblicare un lavoro in html/PDF

E’ possibile generare in maniera automatica la documentazione/report di un


lavoro che avete eseguito in Matlab.
Se viene usata una particolare sintassi all’interno di uno script Matlab, matlab sarà
in grado di auto-generare per noi la documentazione di quello script.

Si possono utilizzare i tasti di formattazione testo, grassetto, corsivo, lista puntata,


ecc. che hanno la funzionalità di aiutarci nell’inserimento della giusta sintassi.

Una volta terminato il lavoro è possibile generare il documento premendo il tasto


«Publish». E’ inoltre possibile specificare il formato(html o pdf) nelle impostazioni
di «Publish» (freccetta sotto il tasto)

File esempio: Document.m


Ripasso Generale - GUI e HTML/PDF - Lezione
83
11
GUI - Graphical User Interface
Per iniziare la creazione di una GUI inseriamo da riga di comando:
>> guide

La gui ci permette di fornire all’utente un’interfaccia grafica con cui interagire:


Bottoni, testo editabile, menu, grafici.

File esempio: simpleGUI.m

Ripasso Generale - GUI e HTML/PDF - Lezione


84
11
GUI - Graphical User Interface

I componenti vengono aggiunti alla finestra che conterrà la nostra applicazione.


Ogni componente viene identificato univocamente attraverso il suo TAG (nome).
Se volete approfondire: http://it.mathworks.com/help/matlab/creating_guis/about-
the-simple-guide-gui-example.html
Ripasso Generale - GUI e HTML/PDF - Lezione
85
11
Fine del corso /

• Buona preparazione dell’esame e del progetto.

• Contatti:
renato.mainetti@unimi.it
• Pagine del corso:
• http://mainetti.di.unimi.it/teaching.html
• http://aborgheseiaad.ariel.ctu.unimi.it/v3/home/Default.aspx

Ripasso Generale - GUI e HTML/PDF - Lezione


86
11

Potrebbero piacerti anche