Bien sûr, voici un programme Python pour modéliser des équations mathématiques spécifiques au sujet de l’apprentissage non supervisé (unsupervised learning) en utilisant un ton neutre. Ce programme va se concentrer sur la classification des données en utilisant l’algorithme K-means.
« `python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Génération de données aléatoires pour l’exemple
np.random.seed(42)
X = np.concatenate([np.random.randn(100, 2) + [-2, -2],
np.random.randn(100, 2),
np.random.randn(100, 2) + [2, 2]])
# Visualisation des données
plt.scatter(X[:, 0], X[:, 1], s=50, c=’k’)
plt.title(‘Données initiales’)
plt.show()
# Utilisation de K-means pour la classification non supervisée
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# Attribution des labels aux points de données
labels = kmeans.labels_
# Visualisation des résultats de classification
plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap=’viridis’)
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c=’red’, s=200, alpha=0.75, marker=’X’)
plt.title(‘Classification avec K-means’)
plt.show()
# Calcul et affichage des distances entre les centres et les points de données
distances = kmeans.transform(X)
print(« Distances entre les points de données et les centres : »)
print(distances)
# Calcul et affichage des centres de clusters
print(« \nCentres des clusters : »)
print(centers)
# Évaluation de la qualité de la classification
inertia = kmeans.inertia_
print(« \nInertie (somme des distances au carré entre chaque point et le centre de son cluster) : »)
print(inertia)
« `
Explication du Programme
1. **Génération de Données Aléatoires** :
– Nous utilisons `np.random.randn` pour générer des données aléatoires. Ces données sont ensuite concaténées pour former un ensemble de données qui représente trois clusters distincts.
2. **Visualisation des Données** :
– `matplotlib.pyplot` est utilisé pour visualiser les données initiales. Les points de données sont affichés en noir.
3. **Utilisation de K-means** :
– L’algorithme K-means est initialisé avec `n_clusters=3`, indiquant que nous voulons classifier les données en trois clusters.
– Les données sont ensuite attribuées à des clusters en utilisant la méthode `fit`.
4. **Attribution des Labels** :
– Les labels attribués par l’algorithme K-means sont stockés dans la variable `labels`.
5. **Visualisation des Résultats** :
– Les points de données sont colorés en fonction de leur cluster assigné. Les centres des clusters sont également affichés en rouge pour une meilleure visualisation.
6. **Calcul des Distances** :
– Les distances entre chaque point de données et le centre de son cluster sont calculées et affichées.
7. **Calcul des Centres des Clusters** :
– Les centres des clusters calculés par l’algorithme K-means sont affichés.
8. **Évaluation de la Qualité de la Classification** :
– L’inertie, qui est la somme des distances au carré entre chaque point et le centre de son cluster, est calculée et affichée. Une valeur plus faible d’inertie indique une meilleure classification.
Ce programme fournit une introduction simple et neutre à l’apprentissage non supervisé en utilisant l’algorithme K-means pour la classification des données.