TensorFlow™ sur Databricks
Clusters et k-moyennes
Nous allons maintenant nous aventurer dans notre première application : créer des clusters à l'aide de l'algorithme de k-moyennes. Le clustering est un exercice d'exploration de données qui consiste à trouver des groupes de points de données similaires au sein d'un ensemble de données. L'algorithme de k-moyennes est très efficace pour trouver des clusters dans de nombreux types de datasets.
Pour en savoir plus sur les clusters et les k-moyennes, consultez la documentation de scikit-learn sur son algorithme de k-moyennes ou regardez cette vidéo :
Génération d'échantillons
Nous allons d'abord avoir besoin de générer des échantillons. Nous pourrions le faire de façon aléatoire, mais cela ne nous donnerait probablement que des points très épars ou un gros groupe – rien d'idéal pour le clustering.
Nous allons donc plutôt commencer par générer trois centroïdes, puis choisir de façon aléatoire (avec une distribution normale) autour de ces points. Voici déjà une méthode pour réaliser cette étape :
import tensorflow as tf
import numpy as np
def create_samples(n_clusters, n_samples_per_cluster, n_features, embiggen_factor, seed):
np.random.seed(seed)
slices = []
centroids = []
# Create samples for each cluster
for i in range(n_clusters):
samples = tf.random_normal((n_samples_per_cluster, n_features),
mean=0.0, stddev=5.0, dtype=tf.float32, seed=seed, name="cluster_{}".format(i))
current_centroid = (np.random.random((1, n_features)) * embiggen_factor) - (embiggen_factor/2)
centroids.append(current_centroid)
samples += current_centroid
slices.append(samples)
# Create a big "samples" dataset
samples = tf.concat(slices, 0, name='samples')
centroids = tf.concat(centroids, 0, name='centroids')
return centroids, samples