Reti Neurali Profonde
Codice per reti Neurali con più strati nascosti
Ecco il codice completo con le informazioni sul dataset:
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, Activation
# 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)
# Informazioni sul dataset
print("Informazioni sul dataset:")
print(breast_cancer.info())
# Statistiche descrittive del dataset
print("\nStatistiche descrittive del dataset:")
print(breast_cancer.describe())
# 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], activation='relu'))
model.add(Dense(12, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Compilazione del modello
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])
# Stampa della struttura del modello
print("\nStruttura 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("\nAccuracy sul training set:", train_acc)
print("Accuracy sul test set:", test_acc)
In questo codice, ho aggiunto una stampa delle informazioni sul dataset, che include informazioni sulle colonne e i tipi di dati presenti, insieme a statistiche descrittive del dataset.
Queste informazioni vengono stampate prima di procedere con la preparazione del dataset e la costruzione del modello.