Sklearn кластеризация k-средних (взвешенная), определяющая оптимальный вес выборки для каждой функции?
K-означает кластеризацию в sklearn, количество кластеров известно заранее (равно 2). Есть несколько особенностей. Значения признаков изначально не имеют веса, т. е. они считаются одинаково взвешенными. Однако задача состоит в том, чтобы присвоить каждому признаку собственные веса, чтобы получить наилучшее возможное разделение кластеров. Как определить оптимальные веса выборки (sample_weight) для каждой функции, чтобы получить наилучшее разделение двух кластеров? Если это невозможно для k-средних или для sklearn, меня интересует любое альтернативное решение для кластеризации, дело в том, что мне нужен метод автоматического определения соответствующих весов для многомерных функций, чтобы максимизировать разделение кластеров.
2 ответа
Насколько я понимаю из документации sklearn, sample_weight используется для определения весов для каждого наблюдения (выборки), а не для функций.
Если вы хотите придать вес своим функциям, вы можете обратиться к этому сообщению:Как изменить вес функции для кластеризации K-средних?
Тем временем я реализовал следующее: кластеризация по каждому компоненту отдельно, затем вычисление оценки силуэта, оценки калинского харабаша, оценки Данна и обратной оценки Дэвиса-Булдина для каждого компонента (функции) отдельно. Затем масштабирование этих оценок до одинаковой величины, а затем PCA их до 1 функции. Это произвело веса для каждого компонента. Кажется, этот подход дает разумные результаты. Я полагаю, что лучшим подходом был бы полный факторный эксперимент (DOE), но кажется, что этот простой подход также дает удовлетворительные результаты.