from sklearn.semi_supervised import LabelPropagation
import numpy as np

# STEP 2: dataset misto - tre punti etichettati (classe 0) e tre non etichettati (-1)
X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
y = np.array([0, 0, 0, -1, -1, -1])  # -1 = dato non etichettato

# STEP 3: creazione e addestramento del modello di label propagation
model = LabelPropagation()
model.fit(X, y)

# STEP 4: etichette finali dedotte per tutti i punti (compresi quelli non etichettati)
print("Etichette propagate:", model.transduction_)

# Bonus: livello di confidenza del modello per ogni etichetta assegnata
print("Distribuzione di probabilita\':")
print(model.label_distributions_)