Навчання K-means
Тепер, коли RDD підготовлено до навчання, у цій другій частині ви перевірите значення k від 13 до 16 (щоб зменшити час обчислень) і застосуєте метод ліктя, щоб обрати коректне k. Ідея методу ліктя полягає в тому, щоб запустити кластеризацію K-means на наборі даних для різних значень k, обчислити Within Set Sum of Squared Error (WSSSE) і вибрати найкраще k за різким падінням WSSSE, тобто в точці, де утворюється «лікоть». Далі ви перевчите модель із найкращим k і, нарешті, отримаєте центроїди (центри кластерів).
Пам'ятайте, у вашому середовищі вже доступні SparkContext sc і RDD rdd_split_int.
Ця вправа є частиною курсу
Основи Big Data з PySpark
Інструкції до вправи
- Навчіть модель KMeans з кількістю кластерів від 13 до 16 і виведіть WSSSE для кожного значення.
- Повторно навчіть модель KMeans із найкращим k.
- Отримайте центри кластерів (центроїди) моделі KMeans, навченої з найкращим k.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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.____