#python #dbscan #haversine
#python #dbscan #haversine
Вопрос:
У меня есть набор данных с 33707 строками. Я хочу кластеризировать свой набор данных, используя алгоритм кластеризации DBSCAN с метриками расстояния haversine. Мой код приведен на изображении. Я получаю только один кластер. Какое значение я должен изменить eps или min_samples, чтобы получить точное количество кластеров.
kms_per_radian = 6371.0088
epsilon = 0.5 / kms_per_radian
model = DBSCAN(eps=epsilon,min_samples=300,algorithm='ball_tree', metric='haversine').fit(np.radians(X))
class_predictions = model.labels_
df['CLUSTERS_DBSCAN']=class_predictions
Комментарии:
1. На самом деле эти два параметра определяют количество кластеров, которые вы получаете. Кроме того, как мы можем вам помочь, если мы не знаем ваших данных? Что на самом деле является «точным количеством кластеров»? Возможно, в этом конкретном случае все точки данных принадлежат одному кластеру. Если вы не предоставите хотя бы несколько примеров и не предоставите более подробную информацию о своей проблеме, вы не получите большой помощи. В качестве первого шага я попробую уменьшить min_samples. Попробуйте с 100 и посмотрите, что произойдет. Кластерный анализ — это исследовательский метод, поэтому вам следует попробовать некоторые параметры, проанализировать, попробовать другие параметры, снова проанализировать и так далее…
2. @Dawid Прошу прощения. На самом деле я новичок в этом. У меня есть 13 кластеров с eps = 5 и min_sample = 300. (количество кластеров такое же, как dbscan с евклидовым расстоянием) Неправильно ли брать eps = 5? Я имею в виду, что ранее, когда я кластеризовал свои данные через dbscan с евклидовым расстоянием, я получил 13 кластеров с eps = 0,5 и min_samples = 300. Но это значение приводит к 1 кластеру с матрицей haversine. Я попытался изменить эти два параметра, и при eps = 5.0 я получаю целевое значение количества кластеров. Я просто хочу знать, можно ли принимать значение eps 5 или нет. Немного запутался…
3. Если у вас есть две разные меры расстояния, то неудивительно, что вы получаете разные кластеризации (разное количество кластеров). Эпсилон — это параметр, который неразрывно связан с выбранной мерой расстояния. Рассмотрим простой пример: метрика A имеет диапазон значений от 0 до 1, а metrc B — от 0 до 1000. Теперь имеет ли смысл пытаться найти единственное уникальное значение epsilon ? Здесь нет золотого правила, в котором говорилось бы, что «5.721» является наилучшим значением epsilon для всех возможных кластеризаций. Вы пробуете одно значение, анализируете то, что получаете, пробуете второе значение, анализируете и т. Д.
Ответ №1:
Пожалуйста, попробуйте уменьшить min_samples до небольшого числа.