Метод K-Means Elbow і аналіз силуетів за допомогою Yellowbrick і Scikit-Learn PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Метод ліктя K-Means і аналіз силуету за допомогою Yellowbrick і Scikit-Learn

Вступ

K-Means є одним із найпопулярніших алгоритмів кластеризації. Маючи центральні точки до кластера, він групує інші точки на основі їх відстані до цієї центральної точки.

Недоліком K-Means є вибір кількості кластерів, K, перш ніж запускати алгоритм, який групує точки.

Якщо ви хочете прочитати детальний посібник із кластеризації K-Means, перегляньте «K-Means Clustering with Scikit-Learn».

Метод ліктя та аналіз силуету

Найбільш часто використовуваними прийомами для вибору числа Ks є Метод ліктя і Аналіз силуету.

Для полегшення вибору Кс, в Жовта цегла бібліотека завершує код циклами for і графіком, який ми зазвичай записуємо в 4 рядки коду.

Щоб встановити Yellowbrick безпосередньо з блокнота Jupyter, запустіть:

! pip install yellowbrick

Давайте подивимося, як це працює для знайомого набору даних, який уже є частиною Scikit-learn Райдужка набір даних.

Першим кроком є ​​імпорт набору даних, KMeans та yellowbrick бібліотеки та завантажте дані:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

iris = load_iris()

Зауважте, ми імпортуємо KElbowVisualizer та SilhouetteVisualizer від yellowbrick.cluster, це ті модулі, які ми використовуватимемо для візуалізації результатів Elbow і Silhouette!

Після завантаження набору даних у data ключ групи (тип даних, який є розширенням словника) — це значення точок, які ми хочемо кластеризувати. Якщо ви хочете знати, що означають цифри, подивіться iris['feature_names'].

Відомо, що набір даних Iris містить три види ірисів: 'versicolor', 'virginica' і 'setosa'. Ви також можете оглянути класи в iris['target_names'] перевірити.

Отже, у нас є 4 функції для кластеризації, і їх слід розділити на 3 різні кластери відповідно до того, що ми вже знаємо. Подивимося, чи підтвердять це наші результати за допомогою методу ліктя та аналізу силуету.

Спочатку ми виберемо значення функції:

print(iris['feature_names']) 
print(iris['target_names']) 

X = iris['data']

Тоді ми можемо створити a KMeans модель, а KElbowVisualizer() екземпляр, який отримає цю модель разом із кількістю ks, для якої буде обчислено метрику, у цьому випадку з 2 в 11 Кс.

Після цього підганяємо візуалізатор з даними fit() і відобразити сюжет с show(). Якщо показник не вказано, візуалізатор використовує спотворення метрика, яка обчислює суму квадратів відстаней від кожної точки до її призначеного центру:

model = KMeans(random_state=42)

elb_visualizer = KElbowVisualizer(model, k=(2,11))
elb_visualizer.fit(X)    
elb_visualizer.show()  

Тепер ми вже маємо a Коліно показника викривлення для кластеризації KMeans ділянку з позначкою вертикальної лінії, яка буде найкращим числом ks, у цьому випадку, 4.

Здається, метод Elbow із метрикою викривлення був не найкращим вибором, якщо ми не знали фактичної кількості кластерів. Чи силует також вкаже, що є 4 кластери? Щоб відповісти на це питання, нам просто потрібно повторити останній код із моделлю з 4 кластерами та іншим об’єктом візуалізатора:

model_4clust = KMeans(n_clusters = 4, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_4clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

оцінка силуету для k означає кластер з використанням методу ліктя

Код відображає a Силуетний графік кластеризації KMeans для 150 зразків у 4 центрах. Щоб проаналізувати ці кластери, нам потрібно подивитися на значення коефіцієнта силуету (або оцінки), його найкраще значення ближче до 1. Середнє значення, яке ми маємо, 0.5, позначені вертикальною лінією, і не дуже добре.

Нам також потрібно дивитися на розподіл між кластерами – хороша ділянка має однакові розміри кластеризованих областей або добре розподілених точок. На цьому графіку є 3 менших кластера (номер 3, 2, 1) і один більший кластер (номер 0), що не є результатом, якого ми очікували.

Ознайомтеся з нашим практичним практичним посібником із вивчення Git з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!

Давайте повторимо ту саму схему для 3 кластерів, щоб побачити, що станеться:

model_3clust = KMeans(n_clusters = 3, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_3clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

силует для кластерів kmeans

Змінюючи кількість кластерів, отримували оцінку силуету 0.05 вище, і кластери більш збалансовані. Якби ми не знали фактичної кількості кластерів, експериментуючи та поєднуючи обидва методи, ми б вибрали 3 замість 2 як кількість Ks.

Це приклад того, як поєднання та порівняння різних показників, візуалізація даних і експериментування з різними значеннями кластерів важливі для того, щоб отримати результат у правильному напрямку. А також, як наявність бібліотеки, яка полегшує цей аналіз, може допомогти в цьому процесі!

Часова мітка:

Більше від Stackabuse