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

Malattie cardiache


Algoritmi per identificare segni precoci di malattie cardiache.

Intelligenza artificiale e Sanità

L'intelligenza artificiale (IA) sta rivoluzionando il settore sanitario, offrendo strumenti avanzati per la diagnosi precoce e la gestione delle malattie cardiache.
Attraverso l'analisi di grandi quantità di dati clinici, l'IA è in grado di identificare pattern nascosti e prevedere il rischio di eventi cardiaci, migliorando così l'efficacia delle diagnosi e dei trattamenti.

Diagnosi delle Malattie cardiache

L'IA utilizza algoritmi di apprendimento automatico per analizzare dati clinici e identificare segni precoci di malattie cardiache.
Ad esempio, il Servizio Sanitario Nazionale (NHS) in Inghilterra sta sperimentando uno strumento avanzato chiamato AI-ECG risk estimation (Aire), progettato per analizzare i risultati degli elettrocardiogrammi (ECG) e prevedere il rischio di malattie cardiache fatali e mortalità precoce.
Questo strumento può rilevare problemi strutturali del cuore non visibili ai medici e suggerire ulteriori monitoraggi o trattamenti. citeturn0news14

Regressione Logistica

Un Modello per la Diagnosi
Uno degli algoritmi più utilizzati per la previsione del rischio di malattie cardiache è la regressione logistica.
Questo modello statistico viene impiegato per classificare i dati in due categorie, come "a rischio" o "non a rischio".
La regressione logistica calcola la probabilità che un evento accada basandosi su una combinazione di variabili indipendenti, rendendolo particolarmente utile per problemi di diagnosi medica.

Implementazione Pratica

Un Esempio di Codice
Di seguito è riportato un esempio di come utilizzare l'IA per diagnosticare le malattie cardiache utilizzando un modello di regressione logistica.


import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

# Ignora i warning per mantenere il codice pulito
warnings.filterwarnings('ignore')

# Passo 1: Caricamento del dataset
df = pd.read_csv('https://www.liviobollini.it/cuore.csv')

# Mostra le prime righe del dataset
print("Esempio di dati:")
print(df.head())

# Passo 2: Preprocessing dei dati
# Controllo dei valori mancanti
print("\nValori mancanti:\n", df.isnull().sum())

# Normalizzazione delle caratteristiche
scaler = StandardScaler()
scaled_features = scaler.fit_transform(df.drop('target', axis=1))
X = pd.DataFrame(scaled_features, columns=df.columns[:-1])
y = df['target']

# Passo 3: Suddivisione del dataset in training e test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

# Passo 4: Addestramento del modello di regressione logistica
log_model = LogisticRegression()
log_model.fit(X_train, y_train)
log_preds = log_model.predict(X_test)

# Passo 5: Valutazione del modello
log_accuracy = accuracy_score(y_test, log_preds)
print(f"Accuratezza Regressione Logistica: {log_accuracy:.2f}")
print("\nReport di Classificazione:\n", classification_report(y_test, log_preds))
print("Matrice di Confusione:\n", confusion_matrix(y_test, log_preds))

# Visualizzazione della matrice di confusione
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix(y_test, log_preds), annot=True, cmap='Blues', fmt='d')
plt.title('Matrice di Confusione')
plt.xlabel('Predetto')
plt.ylabel('Reale')
plt.show()

# Passo 6: Predizione su nuovi dati
print("\nInserisci i tuoi dati per la predizione:")

new_data = pd.DataFrame({
    'age': [int(input("Inserisci la tua età (numero intero): "))],
    'sex': [int(input("Inserisci il sesso (0 = Femmina, 1 = Maschio): "))],
    'cp': [int(input("Inserisci il tipo di dolore toracico (0-3): "))],
    'trestbps': [int(input("Inserisci la pressione sanguigna max a riposo (mm Hg): "))],
    'chol': [int(input("Inserisci il livello di colesterolo (mg/dl): "))],
    'fbs': [int(input("Glicemia a digiuno > 120 mg/dl? (0 = No, 1 = Sì): "))],
    'restecg': [int(input("Risultato dell'ECG a riposo (0-2): "))],
    'thalach': [int(input("Inserisci la frequenza cardiaca massima raggiunta: "))],
    'exang': [int(input("Esercizio fisico induce angina? (0 = No, 1 = Sì): "))],
    'oldpeak': [float(input("Inserisci il valore di sottolivellamento del tratto ST indotta dall'esercizio: "))],
    'slope': [int(input("Pendenza del segmento ST (0-2): "))],
    'ca': [int(input("Numero di vasi principali colorati da fluoro durante un'angiografia (0-4): "))],
    'thal': [int(input("Thalassemia (0-3): "))]
})

# Normalizzazione dei nuovi dati
new_data_scaled = scaler.transform(new_data)
prediction = log_model.predict(new_data_scaled)
print("\nPredizione per i nuovi dati:", "A rischio di malattia cardiaca" if prediction[0] == 1 else "Nessuna malattia cardiaca")


Spiegazione del Codice

Importazione delle Librerie
Vengono importate le librerie necessarie per l'analisi dei dati, la costruzione del modello e la visualizzazione dei risultati.
Caricamento del Dataset
Il dataset viene caricato dall'URL specificato e vengono visualizzate le prime righe per una rapida ispezione.
Preprocessing dei Dati
Si verifica la presenza di valori mancanti e si normalizzano le caratteristiche per garantire che tutte abbiano lo stesso peso nel modello.
Suddivisione del Dataset
Il dataset viene suddiviso in set di addestramento e di test per valutare le prestazioni del modello su dati non visti.
Addestramento del Modello
Viene utilizzata una regressione logistica per addestrare il modello sui dati di addestramento
Predizione su Nuovi Dati
L'utente inserisce i propri dati e il modello fornisce una previsione sul rischio di malattia cardiaca.

Test del Codice

Il codice può essere testato utilizzando Google Colab, un ambiente online per eseguire codice Python senza necessità di configurazioni locali.
Puoi accedere a Google Colab tramite il seguente link: .

Approfondimenti

Leggi questo articolo