«Кластерный анализ» с MySQL - PullRequest
0 голосов
/ 17 ноября 2010

Это сложный вопрос. Вероятно, есть имя для этого, и я не знаю его, поэтому я точно опишу проблему.

У меня есть набор данных, включающий несколько пользовательских значений. Мне нужно уметь определять на основе какого-то среднего или, лучше сказать, «близость данных», какое значение является правильным значением. Например, если бы я получил следующие три представления от трех пользователей, 4, 10, 3, я бы знал, что 3 или 4 будет «правильным» значением в этом случае. Если бы я усреднил это, я получил бы 5,6, что не является ожидаемым результатом.

Я пытаюсь сделать это, используя MySQL и PHP.

tl; dr Необходимо найти значение из набора данных на основе «близости» относительных значений (с использованием MySQL / PHP)

Спасибо!

Ответы [ 3 ]

2 голосов
/ 17 ноября 2010

Кластеризация с использованием базы данных не будет процедурой одного типа запроса.Для эффективной генерации кластеров требуются итерации.

Сначала вам нужно решить, сколько кластеров вы хотите.Если бы вы хотели только один кластер, то, очевидно, все пошло бы на это.Если вам нужно два, то вы можете написать свою программу, чтобы разделить узлы на две группы, используя некую метрику корреляции.

Другими словами, я не думаю, что это вопрос MySQL, а скорее кластеризациявопрос.

1 голос
/ 17 ноября 2010

Я думаю, это то, что вы ищете:

SELECT id, MIN(ABS(id - (SELECT AVG(id) FROM table))) as min
FROM table
GROUP BY id
ORDER BY min
LIMIT 1;

Например, если ваш набор данных содержит следующие идентификаторы: 3, 4, 10, в среднем 5,6667. Ближайшее значение к 5.6667 - 4. Если ваш набор данных равен 3, 6, 10, 14, в среднем 8,25, самое близкое значение - 10.

Это то, что возвращает этот запрос. Надеюсь, это поможет.

0 голосов
/ 23 мая 2013

У меня сложилось впечатление, что вы ищете медиана

Например, в списке 1 2 3 4 100, медиана (центральное значение) составляет 3.

Возможно, вы захотите найти [https://stackoverflow.com/search?q=sql+median для нахождения медианы в SQL].

...