
Artyom
16.08.2018
12:20:16

Daniel
16.08.2018
14:47:01

Artyom
16.08.2018
16:21:49
ну вам, конечно, виднее


Maks
16.08.2018
18:50:29
всех приветствую.
не так давно передо мной стала задача: есть объекты. для каждого объекта нужно найти ближайший. этих объектов 46 000.
когда-то я решил эту задачу на c#: там я использовал "параллельный linq". отработало за 5 с чем-то минут.
сейчас я решил повторить эту задачу, используя numpy и pandas на pythone.
на это меня вдохновила книга python для сложных задач, там в главе про numpy рассказывается про задачу k ближайших соседей.
загружаю объекты из .csv файла
objects = pd.read_csv('E:objects.csv', delimiter=';')
x = objects['x'].values
y = kolodcy['y'].values
coord = np.column_stack((x, y))
расстояние между объектами можно найти по формуле пифагора. что бы найти разность координат:
diff = coord[:, np.newaxis, :] - coord[np.newaxis, :, :]
но эта строка выдает ошибку:
---------------------------------------------------------------------------
MemoryError Traceback (most recent call last)
<ipython-input-27-0f1ddfa9a59d> in <module>()
----> 1 diff = coord[:, np.newaxis, :] - coord[np.newaxis, :, :]
MemoryError:
я сейчас пытаюсь повторить пример из книги, многого не знаю.
но скажите, ведь есть же более эффективный способ решить эту задачу на питоне без вызова memory error, я просто его не знаю?
или такого рода задачи принято решать на кластерах?

Google

tonko
16.08.2018
18:52:55
Итерацию используй

undiabler
16.08.2018
18:53:09
да, эффективный - пройтись ручками и посчитать
пандас очень прожорливый, он составляет матрицу в памяти и потом их перемножает

tonko
16.08.2018
18:53:16
Скорее всего скопом в оперативку не влезают
Хотя интересно почему пандас сам по себе не использует итераторы

Maks
16.08.2018
18:54:17
на c# я как раз "ручками" и перебирал. ну ладно.

Ruslan
16.08.2018
18:56:34
А можно книгу, плес?)

tonko
16.08.2018
18:57:03
Ну у тебя еще до момента итерации память кончается

Maks
16.08.2018
18:57:46
https://oz.by/books/more10641687.html
http://b-ok.xyz/book/3380613/bd2de6

tonko
16.08.2018
19:00:40
Хотя нет, вру, не до итерации, а скорее всего в процессе

Ruslan
16.08.2018
19:01:29

tonko
16.08.2018
19:01:59
Проверить мои догадки можно уменьшив данные раза в 2

Google

Maks
16.08.2018
19:04:07
завтра сделаю


Vova
17.08.2018
13:42:16
всех приветствую.
не так давно передо мной стала задача: есть объекты. для каждого объекта нужно найти ближайший. этих объектов 46 000.
когда-то я решил эту задачу на c#: там я использовал "параллельный linq". отработало за 5 с чем-то минут.
сейчас я решил повторить эту задачу, используя numpy и pandas на pythone.
на это меня вдохновила книга python для сложных задач, там в главе про numpy рассказывается про задачу k ближайших соседей.
загружаю объекты из .csv файла
objects = pd.read_csv('E:objects.csv', delimiter=';')
x = objects['x'].values
y = kolodcy['y'].values
coord = np.column_stack((x, y))
расстояние между объектами можно найти по формуле пифагора. что бы найти разность координат:
diff = coord[:, np.newaxis, :] - coord[np.newaxis, :, :]
но эта строка выдает ошибку:
---------------------------------------------------------------------------
MemoryError Traceback (most recent call last)
<ipython-input-27-0f1ddfa9a59d> in <module>()
----> 1 diff = coord[:, np.newaxis, :] - coord[np.newaxis, :, :]
MemoryError:
я сейчас пытаюсь повторить пример из книги, многого не знаю.
но скажите, ведь есть же более эффективный способ решить эту задачу на питоне без вызова memory error, я просто его не знаю?
или такого рода задачи принято решать на кластерах?
не обязательно кластер, можно воспользоваться дешёвым провайдером виртуалок с большой памятью, на час, на два и тп
Ну или не дешёвым - https://cloud.google.com/compute/, Azure или Амазон


Maks
17.08.2018
13:43:39
только что попробовал сделать поиск ближайшей точки для массива из 1000 координат - посчитало моментально.

Vova
17.08.2018
13:44:14
если проблема в этом то да
https://www.scaleway.com/pricing/
есть не такие мастодонты как вышеозвученная трока. Например scaleway (не ARM до 120 Gb опертивка)
Есть Hetzner он тоже даёт быстрые виртуалки, но макс 32Gb и рега требует скан паспорта (они замороченные)
Есть куча других провайдеров где можно найти 32-64-128 GB опертивки

Maks
17.08.2018
13:47:19
сейчас считает уже как полчаса перебором на полной коллекции) не пять минут, как было на PLINQ на c#, но я еще просто не знаю, как в питоне все распаралелливать. ну и думаю пока что стоит ковыряться и мучать свой комп. только потом, когда типо пойму, что без виртуалки никак, тогда думаю займусь.

Vova
17.08.2018
13:48:06
Вышеозвученной петёркой я пользуюсь регулярно (есть нюансы, например проблемы с использованием Windows если кто то вдруг захочет завести Pandas\Anaconda\Jupнter на Windows. хотя подвиндой это so so занятие..., бывают редкие странные баги о которых комьюнити ничего не знает )

Maks
17.08.2018
13:49:10
то есть конкретно под виндой есть баги при использовании anacondы?

Vova
17.08.2018
13:50:40
BTW я кстати тоже пишу на C# (среди прочих) и недавно освоил netcore, поэтому запускаю C# на Linux и даже удалённо отлаживаю (из Windows). Это один из моих пайпалйнов - пишу на C# под виндой (netcore), а потом запускаю куча инстансов (виртуалок) с Linux. C# довольно быстр. Но с библами - увы и ах. И уже пережёванные и сокращённые данные ("всё есть сокращение размерности " в каком то смысле) оттуда (сыпятся в Mongodb) анализирую в Pandas и тп

Admin
ERROR: S client not available

Vova
17.08.2018
13:51:12
какие нибудь опции типа n_jobs =-1 могут плохо работать (в винде нет Fork и от этого проблемы)
старые и отстающие релизы некоторых не самых попсовых пакетов (приходится собирать самому)

Henry
17.08.2018
13:52:42

Vova
17.08.2018
13:53:08
в общем я бы рекомендовал не связывать с Windows (хотя я сам пользуюсь и раз в несколько месяцев ловлю что то платформоспецифичное)

Google

Henry
17.08.2018
13:53:43
Oww no translator?

Vova
17.08.2018
13:56:37
What do you mean, Henry?

Henry
17.08.2018
13:58:19

Daniel
17.08.2018
13:59:40

Henry
17.08.2018
14:01:03
@bigdata_en
Seems Inactive tho?♂I got 0 replies ?I need some help

Vova
17.08.2018
14:01:19
I guess - Most of us

Henry
17.08.2018
14:03:13
Nevermind ?Enjoy your conversation...I don't wanna spoil your chat?

Maks
17.08.2018
14:39:06
Vox, ты упомянул, что некоторые вещи пишешь на c#. ты не задумывался в связи с этим переход на f# как на совместимый с .net функциональный язык, на котором тоже можно работать с большими данными?

Lepus
17.08.2018
14:45:18
Коллеги, доброго дня!
Скажите, пожалуйста, кто-нибудь сталкивался с построением регрессионных моделей, у которых в target сильная стохастичность с маленьким отклонением?