Classificazione Multiclasse
Processo di trasformazione del Data set MNIST
Classificazione Multiclasse
Processo di trasformazione del Data set MNIST
Per la classificazione Multiclasse, in molti tutorial vieneusato il Data set MNIST.
Ub data set di circa 6000 righe, che pero' per essere usato per le Reti Neurali
Richiede:
- La trasformazione delle in immagini in formato, in array numpy la normalizzazione del data set
Trasformazione in array
Il prompt usato per chatGPT è:In python caricare il data base MNIST, Il data set MNIST ha le immagini in formato binario che vanno trasformate in array numpy.
Normalizza il data set. Mostra informazioni sul data set e 5 immagini dopo la trasformazione, usando la funzione plt.imshow.
Usa la funzione reshape per impostare le immagini alla dimensione di 28 X 28 px, scala di colori bianco e nero.
Per ogni immagine che mostri mostra anche la label.
codice 1 step, caricamento e trasformazione array numpy
Il codice ottenuto è
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import mnist
# Carica il dataset MNIST
(X_train, y_train), (_, _) = mnist.load_data()
# Trasforma le immagini in array numpy e ridimensiona alla dimensione 28x28
X_train = X_train.reshape(X_train.shape[0], 28, 28)
# Mostra informazioni sul dataset
print("Numero di immagini nel training set:", X_train.shape[0])
print("Dimensioni di ciascuna immagine:", X_train.shape[1:], "pixels")
# Mostra 5 immagini con le rispettive label
plt.figure(figsize=(10, 5))
for i in range(5):
plt.subplot(1, 5, i+1)
plt.imshow(X_train[i], cmap='gray')
plt.title("Label: {}".format(y_train[i]))
plt.show()
Questo codice testato su Google Colab
Risponde mostrando 5 immagini e la relativa label (target)
Numero di immagini nel training set: 60000
Dimensioni di ciascuna immagine: (28, 28) pixels
Normalizzazione del Data Set
Ancora con chatGPTSuccessivamente Esegui la normalizzazione del data set.
La rete neurale, dovrà avere un output y di 10 classi.
Quindi per y sia training ( y_train) che test (y_test) applicheremo la funzione to_categorical attribuendo il valore a una variabile y_train_dump e y_test_dump.
Per essere sicuri della normalizzazione, stampa il valore massimi di X e y.
Per verificare la corretta applicazione della funzione to_categorical, stampa un esempio variabile y_train_dump e y_test_dump
from keras.utils import to_categorical
# Carica il dataset MNIST
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# Normalizzazione del dataset
X_train = X_train / 255.0
X_test = X_test / 255.0
# Applica la funzione to_categorical alle label
num_classes = 10
y_train_dump = to_categorical(y_train, num_classes)
y_test_dump = to_categorical(y_test, num_classes)
# Stampa dei valori massimi di X e y
print("Massimo valore di X_train:", np.max(X_train))
print("Massimo valore di y_train_dump:", np.max(y_train_dump))
# Verifica dell'applicazione corretta della funzione to_categorical
print("Esempio di y_train_dump[0]:", y_train_dump[0])
print("Esempio di y_test_dump[0]:", y_test_dump[0])
Massimo valore di X_train: 1.0
Massimo valore di y_train_dump: 1.0
Esempio di y_train_dump[0]: [0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
Esempio di y_test_dump[0]: [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]