data hate
103 subscribers
57 photos
1 video
14 links
Авторский канал про противоречия, заблуждения и интересные факты связанные с данными.
Download Telegram
А вот пример кода и интерфейса
🔥4
Существует Портал открытых данных Москвы . Там есть данные разной степени интересности от практически бесполезных до, например, датасета дорожных знаков.

Мне же приглянулся датасет расписание рейсов, в котором есть детальное расписание всех маршрутов наземного городского пассажирского транспорта. Рядом лежат справочники, в которых находится информация какому рейсу соответствует какой маршрут и т. д. Все датасеты можно сохранить в удобном формате. Но год назад, когда я собирался это сделать возникла проблема. Датасет расписание рейсов нельзя было скачать. Под ссылкой на скачивание было написано генерируется. Я подождал несколько дней, а датасет для скачивания все еще генерировался. Пришлось воспользоваться API. Оно, к счастью, у data.mos.ru есть.

В API можно пропускать N первых строк и выбрать число объектов в ответе. В документации говориться, что можно запрашивать до 10 тысяч записей, но в реальности для датасета с расписанием это оказалось слишком много. Поэкспериментировав с числом записей, которое я хочу получить и разным количеством одновременных запросов, я пришел к следующей формуле: оптимально запрашивать по 100 записей пачками по 5-7 запросов одновременно. Если запрашивать больше, записей или чаще, то это помогает ненадолго. Потом API перестает работать на несколько минут. У меня сложилось впечатление, что у них какая-то супер неоптимальная база для миллионов строк и я её единственный пользователь, который работает на грани того, чтобы её положить.

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

Хорошо, что сейчас его можно скачать по-человечески одним кликом. И хорошо, что такая возможность появилась только сейчас, а не сразу после того как я закончил свои мучения с API. Иначе было бы очень обидно.
👍4
В предыдущем посте я описал, как скачал данные по расписанию наземного транспорта. Скачал я их не для того, чтобы просто положить куда-то, а для того, чтобы сделать маршрутизатор. Идея простая - давайте положим данные о движении автобусов в граф, а затем в этом графе будем искать самый быстрый путь.

Я считал, что есть 3 вида вершин графа.
- точки начала и конца маршрута
- пешеход на остановке
- человек в автобусе на остановке
Точки начала и конца маршрута соединяем с ближайшими вершинами пешеход на остановке. Пешехода на остановке соединяем с человеком в автобусе на этой же остановке. Вершины в автобусе на остановке соединены друг с другом согласно маршруту, по которому движется автобус.

Вес (время в пути) для ребер, в зависимости от того, что мы соединяем - это
- интервал движение конкретного маршрута
- время в пути между остановками
- расстояние деленное на скорость пешехода

Стоит отдельно упомянуть про соединение вершин пешеход на остановке. Если маршрут с пересадкой, то иногда сесть на второй автобус нужно не на той остановке, на которую ту приехал. Необходимо пройтись для соседней. В графе это реализуется просто - нужно добавить ребер между соседними остановками. Однако, необходим компромисс - если соседей мало, то возникают маршруты, где нужно:
- выйти из автобуса
- дойти до остановки 1
- дойти до остановки 2
- дойти до остановки 3
- сесть в автобус.
Зачем идти до 2 остановки, если можно сразу дойти до 3. Этот эффект можно устранить, если увеличить количество соседних остановок, между которыми я строю ребра, но это увеличивает размер графа а, следовательно, время построения маршрута. Для работы с графами я использую библиотеку networkx и в этой задаче я упираюсь в производительность, поэтому приходится искать компромисс. К счастью этот компромисс мне удалось найти и получились маршруты похожие на правду.

У нас есть маршрутизатор. Осталось добавить карту и "убийца Яндекса" готов. Для рисования карт я выбрал библиотеку OpenLayers, которая подкупила меня богатой галереей примеров.

Посмотреть, что же получилось и поиграться можно по ссылке.
https://185.117.153.195:5000/
🔥2👍1
По данным Mediascope аудитория Instagram упала в 5 раз. Стоит задаться вопросом, как они считают. А считаю они следующим образом. Они просят людей установить приложение на свой телефон. А приложение передают детальную информацию о трафике и использовании приложений. Mediascope утверждают, что выборка у них репрезентативная, а если нет, то они её перевзвешивают. И вроде бы все хорошо. Но есть два нюанса:
- приложение Mediascope есть только на Android. То есть в выборку не попадают пользователи яблочных телефон. А это важно, особенно для определения популярности инсты
- cколько людей, которые продолжили пользоваться истаграмом с помощью VPN, удалили или не стали устанавливать приложение, которое следит за ними? Ведь как-то странно с одной стороны заходить обходными путями в запрещенную соцсеть, а с другой отдавать свои данные кому попало. Интересно, сколько по их данным, особенно одаренных людей, которые пользуются тором.

Поэтому оценка падения в 5 раз выглядит слишком драматической.
🔥2
Решил я тут подумать, кого ещё ChatGPT "может оставить без работы" и попросил написать законопроект "О запрете ношения бород в торговых центрах, музеях и автомастерских". Получилось очень похоже на правду. Остается только догадываться - это ChatGPT такой умный или законы настолько однотипные.
😁4
Прочитал я тут историю как один инженер перешел из Google в OpenAI и между делом заявил, что для обучение Bart (аналога ChatGPT от гугла) использовались ответы ChatGPT, которые выложены на сайте sharegpt.com. Google все отрицает, доказательств нет и все выглядит как слово одного против слова другого.

В 2011 году произошла похожая история. Только доказательств было больше. Google подозревал Microsoft, а точнее Bing в том, что они копирую их поисковую выдачу. Чтобы доказать это они сделали следующее. Выбрали 100 редких запросов, вроде hiybbprqag, для которых или нет выдачи и руками захардкодили результаты в поиске. Потом попросили 20 своих инженеров из дома поискать по этим странным запросам в IE. Для 9 из этих 100 запросов Bing стал показывать то же самое. Инженеры из Google написали статью, мол Bing копирует нашу выдачу через Internet Explorer и Bing Toolbar. Напомню, что доля IE в 2011 была около 50%. Bing написал в ответ, что они только используют результаты поиска гугла, как сигнал, а не тупо копируют его. А еще накинул: “А вы сами данными Google Toolbar и Chrome не злоупотребляете?”.

Занятно, что сейчас идет речь о том, что вообще нельзя пользоваться результатами ChatGPT для коммерческого использования, а в 2011 можно было, нельзя было в тупую копировать.

Интересно, а в ChatGPT уже заложены ханипоты? И будет ли Google получать ответы ChatGPT с помощью Хрома, у которого доля рынка 66%?
👍1🔥1
Как-то я работал в компании, которая занималась геоаналитикой. А когда ты занимаешь геоаналитикой, приходится собирать данные из самых разных источников. Одним их таких источников был "Яндекс API поиск по организациям", откуда мы собирали данные по координатам и некоторым атрибутам магазинов, кафе и т. д. Пользовательское соглашение запрещало сохранять эти данные. Разрешено было только показывать их на картах Яндекса и кешировать. Но мы собирали и никому не рассказывали) Чтобы получить список организаций нужно передать границы прямоугольника и текстовый запрос, например "супермаркеты", "кафе и т.д." Максимум API выдавало 500 организаций. А если их было больше, то приходилось разбивать прямоугольник на прямоугольники поменьше. У бесплатного ключа стояло ограничение на 500 запросов в сутки. Поэтому приходилось регистрировать десятки Яндекса, и для каждого из них создавать ключ.

Интересный факт. Самые популярные названия магазинов выглядели примерно так:
- Продукты
- Магазин продукты
- Магазин продуктов
Оказывается крупнейшая сеть магазинов это не Пятерочка или Магнит, а Продукты
🔥3👍1
В 2013 году я работал на выставке роботов. Тогда всем казалось, что будущее — это не чатботы и генераторы изображений. Тогда будущее виделось не в софте, а в железяках - то есть в роботах. Из названия можно понять, что этому и была посвящена выставка. Роботы были разные. Подробнее я может быть расскажу в следующих сериях, но сегодня я остановлюсь на роботе-художнике по имени Поль.

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

Работал робот, следующий образом: человек садиться перед веб камерой, робот его фотографирует и водит ручкой по бумаге. Причем алгоритм движения ручки не как у принтера сверху вниз, а как у реального художника. Вначале он намечает овал лица, потом отмечает крестиками глаза, нос, затем обозначает рот. После этого он дополняет портрет штрихами и линиями в разных частях портрета. Весь процесс занимает 30–40 минут. Это достаточно долго. Многие гости на выставке хотели себе портрет, но не каждый мог его получить. Все из-за того, что робот — это не принтер. Он работает далеко не по оптимальному алгоритму, а имитирует реального художника. Портреты получались своем авторском стиле. Этому стилю не мешают некоторые неточности или люфт механизмов.

Сейчас Поль продолжает свою творческую деятельности и не ограничивается портретами. Как и положено художнику широко не известен и проигрывает Midjourney и подобными нейронными сетями. Но что-то мне подсказывает, что человечество еще наиграется с нейронками и его время еще настанет.
https://vimeo.com/361093329
👍2🔥2
Есть новости, которые можно хорошо описать табличкой. Но их зачем-то описывают в текстом. Недавно я увидел такую новость:

В ноябре продажи снизились на 2% по отношению к октябрю, составив 133 тыс. авто. Из них было продано 108,5 тыс. легковых машин (меньше на 3%), 11,1 тыс. LCV (рост на 5%), 12,1 тыс. грузовиков (меньше на 5%), 1,4 тыс. автобусов (рост на 18%).

Эти же данные можно представить в виде таблицы. В отчете, на основе которого написано новость, именно таблица. Зачем её переписывать?
1
Решил я поиграться с Mojo - новым языком программирования, который позиционируется как более продвинутая альтернатива Python. Тем более недавно выкатили его SDK и теперь его можно запускать локально, а не в ноутбуке на облаке. Код, правда, писать можно только в VS Code. Туда завезли плагин для подсветки синтаксиса. Так что пришлось скачивать непривычную для меня IDE. В jupyter ноутбуке Mojo как бы можно запускать, но не в привычном всем виде, а опять таки через только через VS Code.

Я немного поигрался, почитал доку. Mojo как я понял пытается более эффективно работать с памятью. Но в отличие от других языков старается делать так, чтобы не было возможности выстрелить себе в ногу. При этом сохраняя совместимость с Python. Везде в доке написано примерно следуещее: можете делать как в Python, а можете по новому вот так.

Существует страница с проектами на Mojo. Но там в основном проекты, которые кто-то сел затащил в одиночку, а сейчас подзабросил. Это мне напомнило мои pet-проекты, поэтому не знаю взлетит все это в ближайшее время или нет)) Есть относительно популярный репозиторий для работы с датами morrow.mojo. У него 26 форков, но при этом всего 2 контрибьютора. При том что нет отрытых issue или pull requests. Зачем его форкают? По приколу?

Кто я такой чтобы делать прогнозы по поводу будущего языка. Но помоему сейчас вообще хз что с ним будет дальше. И нет смысла даже делать прогнозы.
👍2
В далекую доковидную эпоху, до появления искусственного интеллекта, появился генератор "Генератор тупых новогодних поздравлений". Сейчас такой генератор никого не удивит. Чего мы только не видели за последнее время. Но давайте в наступающем году не забывать про if'ы, эвристики и прочие просты подходы.
https://maximilyahov.ru/generator-new-year/
❤‍🔥1
Недавно я потестил Copilot. У них есть бесплатный триал на один месяц, но для этого нужна карта. Пришлось воспользоваться одним из сервисом, который за 300 рублей дал мне на время карту, которую можно прикрепить. Я установил плагин в свой любимый PyCharm и начал тестировать.

Код он генерить - все как положено. Но вот сгенерировать что-то осмысленное я так и не смог. Я открыл свой пет-проект. Жму на кнопку, смотрю, что там Copilot предложит. Но ничего интересного он не предложил. Либо предложил, но что-то совсем не то. Может быть если бы я более детально написал промт, то он и написал бы, то что мне нужно. Но раз Copilot - "искусственный интеллект", пусть он за меня думает. Если уже нужно детально что-то прорабатывать, то я напишу код, а не супер подробное ТЗ.

Так что мне пока не зашло.
1
Есть задачи, где нужно визуализировать геоданные. Часто такая визуализая - это цветные квадраты или шестиугольники. Это выглядит интересно. Но мне кажется было бы круче если бы это были не квадраты или шестиугольники, а многоугольники в границах дорог. Представьте, что у нас есть данные стоимости недвижимости. В таком случае прикольнее выглядят разукрашеные городские кварталы. Так эти данные проще воспринимать. А вот квадрат выглядит странно, если он захватил половину какого-то квадрата и еще вдобавок кусок реки и какого-то пустыря.

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

Но как сделать такие полигоны? В теории для этого идеально подойдет кадастровая карта. Я очень долго пытался достать хоть в каком-то виде границы этих полигонов. Но у меня ничего не получилось.

Только сравните как выглядит разбиение на полигоны от сервиса "Компас" с разбиением кадастрой карты на примере района Ясенево.
🔥2
Мой опыт использования новомодных моделей ограничивается не только Copilot'ом. Я решил попробовать использовать GhatGPT для генерации статей для Дзена. Мы все знаем что в Дзене статьи часто сомнительно качества. Поэтому написание статей туда звучит как посильная задача для нейронных сетей. Чтобы сгенерировать статью нужно придумать темы. Их можно тоже сгеренировать. Казалось бы, вот и все, но оказалось, что нужно тратить время больше чем хотелось бы.

Нужно выбрать темы. Их можно взять из головы или из ChatGPT. Но все равно их нужно было фильтровать, чтобы убрать откровенную хрень.

Дальше нужно ревьють статьи. Они не все получались. И в зависимости от того насколько плохая эта статья, либо не публиковать её, либо дать задание чату переписать или дописать её.

Так же необходима картинка. Нужно понять, что за картинку я хочу увидеть. Найти такую. И вставить в статью, предварительно подумав в какую часть статью её запихнуть.

Но главное почему я забросил это дело - это результат. У статей оказалось совсем мало просмотров. Может быть эта идя рабочая. И если погрузиться в специфику Дзена и промт-инжиниринг, то из этого что-то получится. Но ведь в таком случае ChatGPT не оставляет ни кого без работы, а всего лишь меняет её формат.

Поэтом будушее наступает, но не слишком быстро.
👍1🎉1🥴1
Случай с одного из прошлых мест работы. У нас был пайплан в airflow, который работал каждый час. Однажды у нас этот пайплан сломался. Я уже не помню почему - главное что упал прод. Узнали мы о том, что все упало только в воскресенье. То есть спустся 2 дня. Почему-то не сработал мониторинг, который должен был написать нам в телеграм, что все плохо.

Не сработал он из-за того, что в процессе нижнее подчеркивание сломало сообщение об ошибки. А появилось это сообщение из-за того, что у нас появился новый сотрудник с _ в нике в телега. А в критичных случаях телеграм бот должен тегал всех DS'ов.

Потом я этому коллеге в шутку написал: "из-за тебя сломался мониторинг"
3👍1🤡1
Продолжение истории с одного из прошлых мест работы.
Суббота, день. Я бегу по беговой дорожке. Не думаю о работе, погрузился в свои мысли, смотрю на солнечный пейзаж в окне. И тут получаю сообщение от бота c алертами. Проблема при монтировании вольюма. И не просто сообщение, а сообщение, которое тегает меня. А теганье через @ продировается через все мьюты. И ты не можешь его не заменить.

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

Я прочитал в одном курсе про system design очень важные слова. Алертинг - это всегда призыв к действию. Иначе он не нужен. Как же это точно. Зачем мне этот алерт. Я не шарю что этот алерт значит, надо ли что-то чинить. А если и надо, то я не смогу, потому что я занимаюсь своими делами, И не должен потому что этом мой выходной. А дежурства тогда у нас не были предусмотрены.
2