2013-11-19 5 views
0

Для примера рассмотрим множество:как сгруппировать близкие числа из набора?

a = [123,234,345,456,124,568,10000,15000,564] 

Затем я нужно сгруппировать вышеуказанные цифры в наборе как

a = [123,234,345,456,124,568,564] 

Пример 2:

a = [10000,12345,11000,10,5000,10500,13000] 

Затем я нужно сгруппировать в выше числа в наборе в качестве

a = [10000,12345,11000,10500,13000] 

поэтому базовая концепция состоит в том, чтобы сгруппировать элементы, которые близки друг к другу.so, пожалуйста, предложите общий код python для этого?

+3

Определить «близко». –

+0

«close» -> где разница b/w чисел сравнительно меньше, чем 234-123 = 111, где в качестве 10000-15000 = 5000 мы можем попробовать ее с любым числом. –

+1

Ваше определение не является транзитивным. как бы вы группировали диапазон (10000)? – alko

ответ

0

Если вы уже знаете, сколько кластеров у вас есть, я предлагаю использовать K-Means кластеризацию из scikit-learn пакета:

from sklearn.cluster import KMeans 
kmeans = KMeans(n_clusters=2) # numbers will be clustered into 2 clusters based on euclidean distance 
numbers = [123,234,345,456,124,568,10000,15000,564] 
X = [[x] for x in numbers] 
kmeans.fit(X) 
zip(numbers, kmeans.predict(X)) 

Выход (первый элемент является числом, второй кластер идентификатор назначен):

[(123, 1), 
(234, 1), 
(345, 1), 
(456, 1), 
(124, 1), 
(568, 1), 
(10000, 0), 
(15000, 0), 
(564, 1)] 

Или для второго примера:

[(10000, 0), 
(12345, 0), 
(11000, 0), 
(10, 1), 
(5000, 1), 
(10500, 0), 
(13000, 0)] 

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

+1

Я не верю, что он хочет «124» в кластере. Его различие заключается в том, что разница между ними соответствует шаблону. '234' -' 123' = '111', а' 345' - '234' =' 111'. Полагаю, он мог бы использовать эти суженные группы, чтобы провести остаток тестирования для группы. – tijko

+0

Спекуляции довольно нечеткие, но я понимаю, что вы имеете в виду. Я думаю, что OP должен определить метрику в этом случае. – Matt

Смежные вопросы