Please enable JavaScript.
Coggle requires JavaScript to display documents.
2024_01_21 Pipeline - Python - Coggle Diagram
2024_01_21 Pipeline - Python
библиотеки
numpy
- матричная обработка данных
scicit-learn
- машинное обучение
Pandas
- импорт файлов, hf,jnf c excel, очистки и подготовка данных
курс на kaggle
:recycle:
seaborn + mathplotlib
- визуализация
Работа в jupiterNotebook
Shift+Enter
- выполнение текущего фрагмента кода
Основной процесс работы с даными -
Pipeline
Импорт библиотек
Data Extraction
- загрузка данных
Data Exploration, EDA - Разведочный анализ данных
Изучается полученнный ОбъектДанных
ОбъектДанных
. ..
describe
- оценочные данные по всей таблице или по колонке
по умолчанию только численные данные
можно и строковые (describe(include='object'))
такой тип данных больше весит и сложнее обрабатывается
1 more item...
info
- общие данные
столбцы с значительным количеством пропусков будем исключать
виден тип данных, понятно, какие столбцы надо будет преобразовать
head
- верхние строки
sample
- случайные строки
Coloumns
- колонки таблицы
pandas.isnull
- работа с пропущенными значениями :recycle:
value_counts
- количество записей (конкретного значения, в категории)
позволяет оценить сбалансированность выборки
groupby
- формирование именованной выборки (группировка) по определенному признаку
как бы добавляется второй индекс
apply
- применить функцию обработки к подвыборке
Визуализация - библиотеки
mathplotlib.pyplot,
либо с надстройкой
seaborn (aka sns.)
Инициализируем препроцессоры данных
numerical_transformer
- обработка числового подмассива
SimpleImputer
(
стратегия
) - заполняет NaN
mean
- СрАриф.
Может оказаться нецелым в массиве целых
Может дать нехарактерные значения
median
- медиана (значение из существующих, наиболее близкое к центру выборки)
Выглядит более реалистично
most_frequent
- мода (наиболее часто встречающееся значение)
constant
заполнение числом (напр. нулями)
IterativeImputer
KNNImputer
MinMaxScaler()
- более безопасная нормализация
Обеспечивает сходимость итеративных решателей и ускоряет ее
StandardScaler
- если нормальное распределение данных в столбцах
плохо масштабирует выбросы
но модели с ним работают чуть точнее
"сжимает" весь набор данных в нормальные рамки
Определение процесса предобработки данных
функции, которые мы будем выполнять для типовых кусков данных разных источников
steps =
[(имяшага, поведение на шаге), .. ]
categorial_transformer
- обработка категориального (в. ч., строкового) подмассива
'imputer',
SimpleImputer(strategy=most_frequent)
понятие медианы для таких данных бессмысленно
или
constant
, если значение очевидно
'onehot', OneHotEncoder(handle_unknown='ignore')
handle_unknown='ignore' - иначе модель в работе упадет, если появятся невиданные ранее данные
Если в рабочей модели вдруг часто появляются невиданные при обучении данные,
labelEncoder
равномерно распределяет числа, но воспринимаемые моделью интервалы между ними оказываются разными
2 more items...
распределяет числа по многомерным векторам (числа сильно разные), но воспринимаемые моделью интервалы между ними оказываются одинаковыми
подходит для несвязанных данных
подходит, если вариантов значений меньше 10
Preprocessor
(общий, запускает два предыдущих)
будет перебирать данные по столбцам (чаще) или строкам
модель
разные модели :recycle:
1 more item...
model=RandomForestRegressor(..)
1 more item...
имя_модели = Pipeline (steps=[('preprocessor', preprocessor), ('model', model)], verbose=true)
2 more items...
Определяем модель обучения
fuzzywuzzy
- библиотека для исправления опечаток
Data Preparation - подготовка данных
Заполнение пропусков данных в Pandas :recycle:
метод
fillna.bfill
- для значений по порядку (пр. временные ряды)
pd.read_csv
Имя файла, индексная колонка, разделитель
pd.Pipeline
- автоматицация обработки
исключает или снижает вероятность ошибок при обработке данных
Задачи при обучении
Пропуски данных
Необходимо либо заполнить, либо удалить столбец
на этапе
data preparation
Небольшое количество рандомных данных не вносит существенной ошибки (до 5% данных)
пропуск в целевой переменной заполнять нельзя, нужно отброситьстроку
dropna
axis
- строки (0) / столбцы (1)
Subset
- целевой столбец (строка)
drop
чаще всего плюсы от заполнения перевешивают минусы от внесенной ошибки
диагностика на этапе
data exploration
разделение датасетов
train_test_split
по умолчанию 80% / 20%
обычно test от 100 до 1000 значений, остальные в train
Распределение колонок
Сохраняем категориальные (object) колонки, где кардинальность < 10 .. 15
Все числовые
Убираем все, в которых пропусков больше 10%
Смотрим, что осталось
Разные масштабы данных
желательно нормализовывать значения
важно при использовании многоосевых градиентных поисковых методов
определение
Целевая переменная
- то, что мы собираемся предсказать
Ее нужно убрать из данных обучения
обучающий датасет
(train)
основной обучающий набор
точность подсчитывается на нем
валидационный датасет
(valid)
Самопроверка
подбор параметров
ML Flow
- метод отслеживания гипотез в процессе работы над проектом или группой проектов
А также для командной работы
Аналоги airflow, DVC
веб-интерфейс
содержит список активных работ
отдельные работы
комментируемы
содержит перечисление случаев запуска модели
включает различные отладочные данные
описание
статус
параметры (входные настройки)
Метрики (выходные параметры, в первую очередь валидационные результаты)
Включает исходники
позволяет сравнивать по ряду метрик
в числовом и графических представлениях
Аналог системы управления версиями
Подключается к
JupiterNotebook