Trening K-means
Teraz, gdy RDD jest gotowe do treningu, w tej 2. części przetestujesz je dla wartości k od 13 do 16 (aby skrócić czas obliczeń) i zastosujesz metodę łokcia, aby wybrać odpowiednie k. Idea tej metody polega na uruchomieniu algorytmu K-means dla różnych wartości k, obliczeniu sumy kwadratów błędów wewnątrz klastrów (WSSSE) i wyborze najlepszego k na podstawie nagłego spadku WSSSE – czyli w miejscu, gdzie pojawia się „łokieć". Następnie ponownie wytrenojesz model z najlepszym k i wyznaczysz centroidy (centra klastrów).
Pamiętaj, że w swoim środowisku pracy masz już dostępny SparkContext sc oraz RDD rdd_split_int.
To ćwiczenie jest częścią kursu
Podstawy Big Data z PySpark
Instrukcje do ćwiczenia
- Wytrenuj model KMeans dla liczby klastrów od 13 do 16 i wyświetl wartość WSSSE dla każdej z nich.
- Wytrenuj model KMeans ponownie, używając najlepszego k.
- Wyznacz centra klastrów (centroidy) modelu KMeans wytrenowanego z najlepszym k.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Train the model with clusters from 13 to 16 and compute WSSSE
for clst in range(13, 17):
model = KMeans.____(rdd_split_int, clst, seed=1)
WSSSE = rdd_split_int.____(lambda point: error(point)).reduce(lambda x, y: x + y)
print("The cluster {} has Within Set Sum of Squared Error {}".format(clst, ____))
# Train the model again with the best k
model = KMeans.train(rdd_split_int, k=____, seed=1)
# Get cluster centers
cluster_centers = model.____