Я испытываю странное явление. Я создал искусственный набор данных только 2 колонок, заполненных числами:Масштабирование данных снижает качество кластеризации
Если я бегу к-значит алгоритм на нем, я получаю следующий раздел:
Этот выглядит хорошо. Теперь, я масштабироваться столбцы с StandardScaler и я получаю следующий набор данных:
Но если я бегу к-значит алгоритм на нем, я получаю следующий раздел:
Теперь это выглядит плохо. Как так? Рекомендуется использовать масштабные функции перед их использованием с помощью k-средств, поэтому я очень удивлен этим результатом.
Вот код, чтобы показать раздел:
data = pd.read_csv("dataset_scaled.csv", sep = ",")
k_means = KMeans(n_clusters = 3)
k_means.fit(data)
partition = k_means.labels_ + 1
colors = ["red", "green", "blue"]
ax = None
for i in range(1, 4):
ax = d.iloc[partition == i].plot.scatter(x = 'a', y = 'b', color = colors[i - 1], legend = False, ax = ax)
Поскольку k-средство - это эвристика, работающая случайным образом, это поможет, если вы сделаете несколько оценок по обоим и сравните их. Возможно, просто используйте больше start-config для k-средств (по умолчанию n_init = 10). И было бы неплохо увидеть некоторый код, чтобы исключить ошибки. Но обычно предварительная обработка должна помочь, как вы упомянули. Но в зависимости от генерации тестовых данных этот шаг нормализации не требуется, если отклонения не такие разные (поскольку средства тоже выглядят одинаково, а для b) – sascha
По вашему запросу я добавил код, используемый для отображения раздела. Масштабирование можно проверить графически. О запуске алгоритма несколько раз, кажется, что на хорошо разделенных наборах данных (например, этот) стандартный алгоритм k-средних всегда сходится к одному и тому же решению. И это то, что я замечаю в этом наборе данных. –