Funzione Leaky ReLU
funzioni di attivazione Utilizzo di Leaky ReLU .
Utilizzo di Leaky ReLU
Ecco il codice aggiornato con l'aggiunta di uno strato nascosto di 4 nodi utilizzando la funzione di attivazione Leaky ReLU per entrambi gli strati nascosti:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, StandardScaler
from keras.models import Sequential
from keras.layers import Dense, LeakyReLU
# Caricamento del dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data"
breast_cancer = pd.read_csv(url, header=None)
# Specifica delle colonne
columns = ['id', 'diagnosis', 'mean_radius', 'mean_texture', 'mean_perimeter', 'mean_area',
'mean_smoothness', 'mean_compactness', 'mean_concavity', 'mean_concave_points',
'mean_symmetry', 'mean_fractal_dimension', 'radius_se', 'texture_se', 'perimeter_se',
'area_se', 'smoothness_se', 'compactness_se', 'concavity_se', 'concave_points_se',
'symmetry_se', 'fractal_dimension_se', 'worst_radius', 'worst_texture', 'worst_perimeter',
'worst_area', 'worst_smoothness', 'worst_compactness', 'worst_concavity',
'worst_concave_points', 'worst_symmetry', 'worst_fractal_dimension']
breast_cancer.columns = columns
# Rimuovere colonne 'id' e 'diagnosis'
X = breast_cancer.drop(['diagnosis', 'id'], axis=1).values
Y = breast_cancer['diagnosis'].values
# Label Encoding per la variabile target Y
label_encoder = LabelEncoder()
Y = label_encoder.fit_transform(Y)
# Standardizzazione delle features X
scaler = StandardScaler()
X = scaler.fit_transform(X)
# Divisione in training e test set
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
# Costruzione della rete neurale
model = Sequential()
model.add(Dense(30, input_dim=X.shape[1]))
model.add(LeakyReLU(alpha=0.1))
model.add(Dense(12))
model.add(LeakyReLU(alpha=0.1))
model.add(Dense(4))
model.add(LeakyReLU(alpha=0.1))
model.add(Dense(1, activation='sigmoid'))
# Compilazione del modello
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])
# Stampa della struttura del modello
model.summary()
# Addestramento del modello
model.fit(X_train, Y_train, epochs=100, verbose=0)
# Valutazione dell'accuracy su training e test set
train_acc = model.evaluate(X_train, Y_train, verbose=0)[1]
test_acc = model.evaluate(X_test, Y_test, verbose=0)[1]
print("Accuracy sul training set:", train_acc)
print("Accuracy sul test set:", test_acc)
In questo codice, ho aggiunto uno strato nascosto di 4 nodi con la funzione di attivazione Leaky ReLU dopo il primo strato nascosto di 12 nodi.
Entrambi gli strati nascosti utilizzano la funzione di attivazione Leaky ReLU con un parametro alpha di 0.1. La funzione di attivazione sigmoide viene ancora utilizzata per lo strato di output.
La struttura del modello viene stampata e vengono calcolate e stampate le accuracy sul training set e sul test set.