DataFrog: Data Science
1.87K subscribers
306 photos
5 videos
60 links
Журнал о Data Science | Machine Learning | Big Data | Deep Learning | Neural Networks | AI

@viktorreh
Download Telegram
Совет по написанию SQL запросов: всегда перечисляйте поля

В некоторых запросах можно использовать вместо названий столбцов их номера или не указывать их вовсе. Но во избежании багов и во имя читаемости так лучше не делать. Особенно обратите внимание на три кейса:

1) Не ставьте * в запросах типа SELECT. Вот так не очень хорошо:

SELECT *
FROM table

Вот так гораздо лучше:

SELECT col, col2, col3
FROM table

2) При добавлении данных в таблицу, так же как и в SELECT перечисляйте поля таблицы. Вот так делать не нужно:

INSERT INTO table
VALUES (col1, col2, col3……)

Лучше вот так:

INSERT INTO table (col1, col2, col3……)
VALUES (col1, col2, col3……)

3) При сортировке (ORDER BY) лучше использовать имена столбцов, а не их позиции (номера). Вот так не надо:

SELECT col, col2, col3
FROM table
ORDER BY 2, 1

Надо вот так:

SELECT col, col2, col3
FROM table
ORDER BY col2, col

😻 #SQL
Про pipe в pandas

pipe - это метод реализации паплайна в pandas через последовательную цепочку преобразований (не путать с Pipeline из скалерна).

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

def normilize(df):
...
return df

def fill_null(df, method):
...
return df

def parse_time(df):
...
return df

new_df = (df
.pipe(normilize)
.pipe(fill_null, method='median')
.pipe(parse_time)
)

😻 #preprocessing
👍1
Запускаем мозг перед рабочей неделей: интересная задача с собеседования аналитика

Представим, что у нас есть два входящих канала привлечения заявок на продукт. Для каждого из каналов аналитик считает конверсии, а также общую конверсию. Вдруг к аналитику приходит менеджер и говорит, что конверсия в обоих каналах выросла, а суммарная упала. Может ли такое быть?

Сразу хочется ответить нет, но задача с подвохом. А ответ – в картинке (но сначала попытайтесь подумать сами)
1
Советуем отличную книгу

Написана простым языком, мало формул, много практических историй. Она структурирует в себе ряд понятий, которые нигде прежде структурированы не были. Кроме того, в книге рассказывается про ML алгоритмы (без глубокой математики) и про особенности их примнения на практике. А ещё про OLAP кубы, историю Retail Rocket и очень интересную и насыщенную карьеру автора. В общем, рекомендуем.

😻 #read
Самая крупная подборка видео по рекомендательным системам на русском языке от нашей команды:

Рекомендательная система на коленке, Михаил Трофимов

Дзен-митап: рекомендательные системы

Обзор нейросетевых рекомендательных систем — Дмитрий Ушанов

Яндекс изнутри: рекомендательные системы Музыки и Дзена

Пишем графовую рекомендательную систему для музыки

Рекомендательные системы | Евгений Соколов | Лекториум

R&D рекомендательной системы — как обучить и выкатить алгоритм в продакшн - Виталий Давыдов

DLS. Семинар. Recommender System.

Архитектура рекомендательной системы Дзена / Дмитрий Кондрашкин

МТС. Построение sequential recommender systems

Архитектура Real Time рекомендательной системы на примере банка: с нуля до готового продукта

Рекомендательная система на базе DataSphere

Андрей Зимовнов. Архитектура рекомендаций Дзена

Дзен-митап: исследования и рекомендательные системы

Ладно, не только от нашей команды, еще спасибо рекомендательным системам YouTube :)

😻 #recommendation_system
Keras уже курит на заднем сидении
Два самых простых способа удалить выбросы
tqdm в pandas

Если применить apply к большому датафрейму, на это может уйти много времени, но сложно сказать, сколько именно. В таких ситуациях хочется научиться как-то отслеживать прогресс. Чтобы это сделать, можно использовать tqdm.

Для этого сначала установим/обновим бибилиотеку:

pip install tqdm
pip install tqdm -U

Затем испортируем tqdm и применяем вместо обычного apply функцию progressapply. Работает она точно так же, только еще показывает прогресс-бар:

`df = pd.DataFrame(np.random.randint(0, 100, (1000000, 100)))

tqdm.pandas(desc="power DataFrame 1M x 100 of random int!")

df.progress
apply(lambda x: x2)
df.groupby(0)1.count().progressapply(lambda x: x**2)
`
Кстати, еще можно менять формат бара через опцию bar
format. Например:

tqdm.pandas(desc="MyBar", bar_format='{desc:<5.5}{percentage:3.0f}%|{bar:50}{r_bar}')

😻 #numpy_pandas #pandas
Большой гайд по optuna

Optuna — это фреймворк для для автоматизированного поиска оптимальных гиперпараметров. Знакомимся с ней ближе.

😻 #train
👍1
Модели экспоненциального сглаживания, и какие они бывают

Пройдемся во верхам, не углубляясь в математику. Поможет освежить в памяти тем, кто знал, и познакомиться с темой тем, кто только начинает изучение.

😻 #time_series