Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

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.