Forwarded from ИЦ "ГЕВИССТА"
Полезные функции NumPy
Функция np.apply_along_axis()
Функция
Давайте создадим массив.
# импортируем NumPy
# создаем массив NumPy
Теперь с помощью функции
# применяем по оси строк функцию подсчета количества
# вхождений значений, затем функцию поиска индекса
# максимального элемента
Практический пример применения https://github.com/rasbt/mlxtend/blob/master/mlxtend/evaluate/bias_variance_decomp.py
Функция np.apply_along_axis()
Функция
np.apply_along_axis() применяет заданную функцию к 1-D срезу массива вдоль указанной оси.Давайте создадим массив.
# импортируем NumPy
import numpy as np# создаем массив NumPy
a = np.array([[0, 0, 0, 1],
[1, 1, 1, 0],
[0, 1, 1, 1],
[0, 1, 1, 0]])
Теперь с помощью функции
np.apply_along_axis() применяем по оси строк функцию np.bincount() для подсчета количества вхождений значений, а затем функцию np.argmax() для поиска индекса максимального элемента.# применяем по оси строк функцию подсчета количества
# вхождений значений, затем функцию поиска индекса
# максимального элемента
np.apply_along_axis(lambda x: np.argmax(np.bincount(x)),
axis=0,
arr=a)
array([0, 1, 1, 0])Практический пример применения https://github.com/rasbt/mlxtend/blob/master/mlxtend/evaluate/bias_variance_decomp.py
Forwarded from ИЦ "ГЕВИССТА"
Трюки_в_NumPy_от_Антона_Вахрушева_GM_Kaggle,_Лаборатория_Сбербанка.ipynb
14.6 KB
Проект «Наши»
Трюки в NumPy от Антона Вахрушева (GM Kaggle, Лаборатория Сбербанка)
In-place операции в NumPy и быстрый mean target encoder на NumPy.
Подробный разбор будет в моей книжке по предподготовке.
Трюки в NumPy от Антона Вахрушева (GM Kaggle, Лаборатория Сбербанка)
In-place операции в NumPy и быстрый mean target encoder на NumPy.
Подробный разбор будет в моей книжке по предподготовке.
Forwarded from Just links
Omnigrok: Grokking Beyond Algorithmic Data https://arxiv.org/abs/2210.01117
Forwarded from Start Career in DS
📊 [ENG] Очень красивый курс по базовой теории вероятностей и статистике:
https://seeing-theory.brown.edu/
Тут фактически ускоренное введение в предметную область, которое позволит вам быстро понять ключевые идеи и термины.
Много супер-наглядных визуализаций. Даже если считаете что шарите в статистике - советую потыкаться и получить эстетическое удовлетворение.
Мне понравились визуализации базовых понятий (мат. ожидание, дисперсия, функция распределения, условная вероятность и т.д.). Если они всегда вас пугали или настораживали - рекомендую посмотреть курс.
https://seeing-theory.brown.edu/
Тут фактически ускоренное введение в предметную область, которое позволит вам быстро понять ключевые идеи и термины.
Много супер-наглядных визуализаций. Даже если считаете что шарите в статистике - советую потыкаться и получить эстетическое удовлетворение.
Мне понравились визуализации базовых понятий (мат. ожидание, дисперсия, функция распределения, условная вероятность и т.д.). Если они всегда вас пугали или настораживали - рекомендую посмотреть курс.
Forwarded from Arseniy Trushin
А. Да. Я же хотел написать, как перестановки генерировать.
Ну так вот. Если у нас есть перестановка [1, 2, 3], то какие перестановки из неё можно сделать, имея на руках 4?
Ну конечно же [4, 1, 2, 3], [1, 4, 2, 3], [1, 2, 4, 3] и [1, 2, 3, 4]. То есть, рассуждаем по математической индукции по длине перестановки. Если у нас n = 1, то список всех перестановок понятен: [[1]]. А если мы уже решили задачу для n - 1, то для решения задачи для n нужно это самое n воткнуть в разные места каждой из сгенерированных ранее перестановок. Вот так
def insert_before(pos, num, perm):
return perm[:pos] + [num] + perm[pos:]
def permutations(n):
if n == 1:
return [[1]]
return [insert_before(q, n, current_perm) for current_perm in permutations(n-1) for q in range(n)]
Ну так вот. Если у нас есть перестановка [1, 2, 3], то какие перестановки из неё можно сделать, имея на руках 4?
Ну конечно же [4, 1, 2, 3], [1, 4, 2, 3], [1, 2, 4, 3] и [1, 2, 3, 4]. То есть, рассуждаем по математической индукции по длине перестановки. Если у нас n = 1, то список всех перестановок понятен: [[1]]. А если мы уже решили задачу для n - 1, то для решения задачи для n нужно это самое n воткнуть в разные места каждой из сгенерированных ранее перестановок. Вот так
def insert_before(pos, num, perm):
return perm[:pos] + [num] + perm[pos:]
def permutations(n):
if n == 1:
return [[1]]
return [insert_before(q, n, current_perm) for current_perm in permutations(n-1) for q in range(n)]
Forwarded from DevFM
Тернистый путь к ClickHouse
Статья ClickHouse: Путь джедая, искавшего дом для своих данных не о самой технологии, а о неоднозначном, сложном пути выбора технологии. И в этом её особенная ценность.
Внедрение новой технологии не возникает на пустом месте. Нужно критически подходить к этому вопросу.
1. Сначала обнаруживается проблема. Если проблемы нет, то и чинить не нужно. В статье обозначена проблема сбора и анализа большого количества данных о действиях пользователей из разных систем и их вечном хранении.
2. Решение следует начинать с анализа предметной области и формирования важных критериев. Автор выделил сложность внедрения и сопровождения, порог входа для аналитиков данных, цену использования.
3. Предлагаемые решения сравниваются по сформированным критериям.
Помимо описания процесса выбора и возникающих сложностей интересно узнать в ретроспективе об архитектуре хранения и работы с данными: MariaDB -> Elasticsearch -> ClickHouse.
Для желающих погрузиться в технические особенности рекомендуем статью от тех же авторов: Репликация ClickHouse без костылей: ожидание и реальность
#skills #softskills
Статья ClickHouse: Путь джедая, искавшего дом для своих данных не о самой технологии, а о неоднозначном, сложном пути выбора технологии. И в этом её особенная ценность.
Внедрение новой технологии не возникает на пустом месте. Нужно критически подходить к этому вопросу.
1. Сначала обнаруживается проблема. Если проблемы нет, то и чинить не нужно. В статье обозначена проблема сбора и анализа большого количества данных о действиях пользователей из разных систем и их вечном хранении.
2. Решение следует начинать с анализа предметной области и формирования важных критериев. Автор выделил сложность внедрения и сопровождения, порог входа для аналитиков данных, цену использования.
3. Предлагаемые решения сравниваются по сформированным критериям.
Помимо описания процесса выбора и возникающих сложностей интересно узнать в ретроспективе об архитектуре хранения и работы с данными: MariaDB -> Elasticsearch -> ClickHouse.
Для желающих погрузиться в технические особенности рекомендуем статью от тех же авторов: Репликация ClickHouse без костылей: ожидание и реальность
#skills #softskills
Хабр
ClickHouse: Путь джедая, искавшего дом для своих данных
* Юристы попросили нас написать, что картинка шуточная, и мы уважаем всех гордых любителей разных систем хранения данных. В разные эпохи развития нашего проекта в качестве основного хранилища, которое...
Forwarded from Борис опять
#лабораторный_журнал
Время закатать рукава и сделать что-то полезное: написать API для базы данных с изображениями.
Больше года не писал API, но я съел на этом столько собак, что код сам вылетает из под пальцев.
Мой любимый сетап:
* DB - PostgreSQL
* ORM - SqlAlchemy
* Миграции - Alembic
* API - Flask
* Сериализация/валидация - Marshmallow
* Тесты - Pytest
* Форматирование кода - Black
* Деплой - Nginx + UWSGI, которые общаются по файлу-сокету как описано здесь. Такой сетап работает даже быстрее, чем uvicorn, потому что быстрее NGINX с настроенным кешированием просто некуда.
Разработка ведется через Docker.
Этот надежный как швейцарские часы сетап покрывает все нужды типичной API. При необходимости к нему без труда прикручиваются другие приблуды типа RabbitMQ + Celery для асинхронных тасок.
Есть только одна загадка: зачем нужен Django?
Время закатать рукава и сделать что-то полезное: написать API для базы данных с изображениями.
Больше года не писал API, но я съел на этом столько собак, что код сам вылетает из под пальцев.
Мой любимый сетап:
* DB - PostgreSQL
* ORM - SqlAlchemy
* Миграции - Alembic
* API - Flask
* Сериализация/валидация - Marshmallow
* Тесты - Pytest
* Форматирование кода - Black
* Деплой - Nginx + UWSGI, которые общаются по файлу-сокету как описано здесь. Такой сетап работает даже быстрее, чем uvicorn, потому что быстрее NGINX с настроенным кешированием просто некуда.
Разработка ведется через Docker.
docker-compose run —rm —service-ports app bash поднимает локальный postgres, контейнер с приложением, контейнер с NGINX. Код передается в контейнер через volume. Разрабатываешь внутри контейнера, даже никаких venv/poetry/conda не надо - докер обеспечивает environment. Если надо можно подключиться к постгресу любым DB клиентом. Все это целиком повторяет то, как система выглядит в продакшне, поэтому нет проблемы “но на моем компьютере-то работает!”. Более того, деплой можно организовать через запуск такого же docker-compose.yml, только с другими параметрами.Этот надежный как швейцарские часы сетап покрывает все нужды типичной API. При необходимости к нему без труда прикручиваются другие приблуды типа RabbitMQ + Celery для асинхронных тасок.
Есть только одна загадка: зачем нужен Django?
Forwarded from Борис опять
Кстати на весь этот сетап можно посмотреть здесь: https://github.com/btseytlin/cowork-19
Это сайт с резюме и вакансиями, который я сделал в Первый Ковид, чтобы помочь сокращенным друзьям найти работу.
Это сайт с резюме и вакансиями, который я сделал в Первый Ковид, чтобы помочь сокращенным друзьям найти работу.
GitHub
GitHub - btseytlin/cowork-19
Contribute to btseytlin/cowork-19 development by creating an account on GitHub.
#mlops
Ещё про ClearML
https://yandex.ru/q/machine-learning/11449503234/
https://yandex.ru/q/machine-learning/11450406146/?w_s=messenger_announce&w_a=messenger_announcement_action&w=messenger_announcement
Ещё про ClearML
https://yandex.ru/q/machine-learning/11449503234/
https://yandex.ru/q/machine-learning/11450406146/?w_s=messenger_announce&w_a=messenger_announcement_action&w=messenger_announcement
Яндекс Кью
«Weights & Biases - 3 простых шага для оптимизации гиперпараметров» — Яндекс Кью
Поиск наиболее производительной модели в многомерном пространстве гиперпараметров может очень быстро стать громоздким. Анализ гиперпараметров с использованием инструмента Hyperparameter Sweeps от п...
Forwarded from BOGDAN
кто дошёл до выбора метрик для своего сервиса, вот чеклист от микромягкого
https://www.microsoft.com/en-us/research/group/experimentation-platform-exp/articles/stedii-properties-of-a-good-metric/
https://www.microsoft.com/en-us/research/group/experimentation-platform-exp/articles/stedii-properties-of-a-good-metric/
#mlops
https://www.researchgate.net/publication/354805553_Demystifying_MLOps_and_Presenting_a_Recipe_for_the_Selection_of_Open-Source_Tools
https://www.researchgate.net/publication/354805553_Demystifying_MLOps_and_Presenting_a_Recipe_for_the_Selection_of_Open-Source_Tools
ResearchGate
(PDF) Demystifying MLOps and Presenting a Recipe for the Selection of Open-Source Tools
PDF | Nowadays, machine learning projects have become more and more relevant to various real-world use cases. The success of complex Neural Network... | Find, read and cite all the research you need on ResearchGate