CARICAMENTO DEI DATI DI INTERESSE
Ora, è il momento della scelta del dataset, e per tale motivo scarichiamo il dataset dei Pima Indians, di cui abbiamo già parlato, dal repository UCI Machine Learning. In realtà utilizzeremo il dataset già elaborato presente nel sito Machine Learning Master al seguente indirizzo:
Dataset CSV File (pima-indians-diabetes.csv)
Lo salviamo come diabetes_con_headers.csv direttamente nella cartella principale ove è presente il nostro file Python Example_1.py di Visual Studio Code. Per comodità, scaricate il link del dataset sopra indicato dal seguente link:
In questo file si trovano una serie di dati (che definiremo caratteristiche) oggetto di studio di 768 donne, con almeno 21 anni e di origine indiana Pima.
Se aprite il file csv vedrete i seguenti dati:
Pregnancies,Glucose,BloodPressure,SkinThickness,Insulin,BMI,DiabetesPedigreeFunction,Age,Outcome
6,148,72,35,0,33.6,0.627,50,1
1,85,66,29,0,26.6,0.351,31,0
8,183,64,0,0,23.3,0.672,32,1
1,89,66,23,94,28.1,0.167,21,0
0,137,40,35,168,43.1,2.288,33,1
5,116,74,0,0,25.6,0.201,30,0
3,78,50,32,88,31,0.248,26,1
10,115,0,0,0,35.3,0.134,29,0
2,197,70,45,543,30.5,0.158,53,1
8,125,96,0,0,0,0.232,54,1
4,110,92,0,0,37.6,0.191,30,0
10,168,74,0,0,38,0.537,34,1
10,139,80,0,0,27.1,1.441,57,0
1,189,60,23,846,30.1,0.398,59,1
5,166,72,19,175,25.8,0.587,51,1
7,100,0,0,0,30,0.484,32,1
0,118,84,47,230,45.8,0.551,31,1
Nel file csv, le prime otto colonne esprimono i seguenti valori:
1) Pregnancies. Rappresenta il numero di volte che il paziente è rimasto incinta.
2) Glucose. Concentrazione di glucosio plasmatico a 2 ore in un test di tolleranza al glucosio orale.
3) BloodPressure. Pressione sanguigna diastolitica, la cosidetta pressione minima, misurata in mm Hg.
4) SkinThickness. Spessore della piega cutanea del tricipite misurata in mm.
5) Insulin. Insulina sierica di 2 ore misurata in mu U/ml.
6) BMI. indice di massa corporea calcolata dalla seguente formula.
7) DiabetesPedigreeFunction. In pratica si tratta di capire se vi è una certa ereditarietà nella comparsa del diabete.
8) Age (età in anni).
Queste colonne costituiscono le nostre variabili indipendenti, ossia le nostre X, mentre l’ultima colonna Outcome rappresenta il risultato finale, ossia, la nostra Y, la variabile dipendente. Quest’ultima se uguale a 0 significa che il paziente non ha sviluppato il diabete, mentre il valore 1 purtroppo, il contrario. Come vedete, tutte le variabili di input e di output sono numeriche e quindi si prestano ad una elaborazione con una rete neurale Keras.
Il codice utilizzato per caricare i dati dal file csv nel dataset diabetes è quello seguente presente nella riga 13.
12 #Importing the Dataset
13 diabetes = pd.read_csv('diabetes_con_headers.csv')
14 dataset = diabetes
15 dataset.info()
Aggiungendo la riga quindici con il metodo info() della classe dataframe si otterranno le seguenti informazioni del “dataset” caricato.
RangeIndex: 768 entries, 0 to 767
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Pregnancies 768 non-null int64
1 Glucose 768 non-null int64
2 BloodPressure 768 non-null int64
3 SkinThickness 768 non-null int64
4 Insulin 768 non-null int64
5 BMI 768 non-null float64
6 DiabetesPedigreeFunction 768 non-null float64
7 Age 768 non-null int64
8 Outcome 768 non-null int64
dtypes: float64(2), int64(7)
memory usage: 54.1 KB
Dai dati ricavati dal metodo info(), si vede come nel dataset non vi valori nulli. Idealmente, e anche operativamente, tali valori potrebbero essere “valorizzati” con la media dei valori della caratteristica.
Prima di continuare con la realizzazione della rete neurale cerchiamo di capire come si distribuiscono i valori delle caratteristiche di input. Con l’aiuto della libreria Seaborn e la libreria Matplotlib eseguiremo delle analisi statistiche sui dati.
Un commento su “Il modello sequenziale di Keras: un esempio di utilizzo.”
Utile