Получи случайную криптовалюту за регистрацию!

Я – ДЖУН, Я ТАК ВИЖУ🤓

Логотип телеграм канала @junior_and_datascience — Я – ДЖУН, Я ТАК ВИЖУ🤓 Я
Логотип телеграм канала @junior_and_datascience — Я – ДЖУН, Я ТАК ВИЖУ🤓
Адрес канала: @junior_and_datascience
Категории: Технологии
Язык: Русский
Количество подписчиков: 13
Описание канала:

В канале вы найдёте информацию о разных приколюхах для Дата Саентиста
Чтобы найти информацию, смотрите закреплённый пост
Канал заставляет сеньоров материться, и вообще ведёт его даже не джун, поэтому его не стоит смотреть никому
Автор: @such_kirill

Рейтинги и Отзывы

3.33

3 отзыва

Оценить канал junior_and_datascience и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

2

3 звезд

0

2 звезд

1

1 звезд

0


Последние сообщения

2023-03-13 16:24:22 #custom_metric

def MAE(true, pred):
score = np.mean(np.abs(true-pred))
return score
2 views13:24
Открыть/Комментировать
2023-03-13 15:57:20
Только что обнаружил #lazypredict - библиотеку Python, которая позволяет обучать, тестировать и сравнивать все ваши алгоритмы ML сразу. Это невероятно! GitHub: https://github.com/shankarpandala/lazypredict

#AutoML
2 views12:57
Открыть/Комментировать
2023-03-13 00:01:29
В науке о данных и машинном обучении #IsolationForest — это алгоритм обнаружения аномалий. Он обнаруживает аномалии с помощью изоляции, а не моделирования нормальных точек.

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

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

Алгоритм имеет линейную временную сложность с низкой константой и требованиями к памяти, что хорошо работает с большими объемами данных.
2 views21:01
Открыть/Комментировать
2023-03-09 18:14:27 1. Какая есть особенность у модели градиентного бустинга (и др. деревянных моделей) при работе с временным рядом.
2. Какие лаги временного ряда нужно брать при прогнозировании на несколько шагов вперед (допустим на 6 мес - 6 шагов).
3. Для каких моделей нужна нормализация для каких нет.
4. Нужна ли нормализация данных при кластеризации.

1. Не прокатит прогнозирование нестационарного ряда, конкретно, с трендом - деревянные модели не выдадут результат, отличный диапазона в обучающей выборке. Поэтому для использования деревянных (и других дискриминативных подходов) нужно выполнить преобразование исходного ряда
2. Тут не уверен в корректности, но все же - берем лаги начиная с -6, чтобы не заглядывать в будущее и не создавать тем самым лик
3. Нормализация, а точнее ее отсутствие, критично для метрических алгоритмов, то есть для алгоритмов основанных на расчете расстояния, яркий пример - алгоритм к-ближайших соседей (knn). Также нормализация нужна и в линейных моделях: представим, что есть два признака - возраст и годовой доход. У одного диапазон от 0 до 100, у другого от 0 и до бесконечности (допустим до 10 миллионов). Отсутствие нормализации в этом случае приведет к большой разнице порядка в весах, то есть для возраста вес будет к примеру 1, а для дохода уже 0.000001. Возникнут приколы с регуляризацией.
4. Продолжение предыдущего вопроса - зависит от алгоритма. При использовании популярного метрического алгоритма kmeans - нужна обязательно
3 views15:14
Открыть/Комментировать
2023-03-09 18:12:13 в нейронках нет аналога feature importance. Отсюда и разговоры про то, что это неинтерпретируемый чёрный ящик. Есть инструменты по типу свёрточных карт в компьютерном зрении или подсветки ключевых слов с помощью механизма attention в трансформерах (NLP), всякие методы через поочерёдную случайную перестановку признаков (permutation importance) или через аппроксимацию сетки деревянными моделями. Последние 2, кстати, реализованы в библиотеке SHAP, которой мы пользовались на одном из вебинаров
3 views15:12
Открыть/Комментировать
2023-03-09 18:10:40
3 views15:10
Открыть/Комментировать
2023-03-09 18:10:03 Например тут по оформлению README-файла профиля
https://habr.com/ru/post/649363/
3 views15:10
Открыть/Комментировать
2023-03-09 18:09:53
ещё есть такая красивая история, как таблица на главной (как на картинке)


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


Документация: https://docs.github.com/ru/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables


Где-то я видел красивый GitHub, где как раз пэты оформлены в виде таблицы, но не могу найти(


Сверху ещё можно добавить описание и тп
3 views15:09
Открыть/Комментировать
2023-03-09 18:08:02 https://pastebin.com/x7XEQtWZ
3 views15:08
Открыть/Комментировать
2023-03-09 18:07:47 Держи тогда для старта мой код из одного из последних проектов:
from functools import partial


import matplotlib.pyplot as plt
import seaborn as sns
import scipy as sp
import lightgbm as lgb
from sklearn.metrics import (cohen_kappa_score, mean_squared_error, confusion_matrix,
ConfusionMatrixDisplay, roc_auc_score, precision_recall_curve,
f1_score, roc_curve, auc, PrecisionRecallDisplay)
from sklearn.model_selection import StratifiedKFold, train_test_split
from sklearn.calibration import CalibratedClassifierCV
import optuna
import optuna.integration.lightgbm as lgbo
import shap


def objective(trial, data=X_train, target=y_train):
params = {
'application': 'regression',
'boosting': 'gbdt',
'metric': 'rmse',
'n_jobs': 4,
'reg_alpha': trial.suggest_float('reg_alpha', 0.001, 10.0),
'reg_lambda': trial.suggest_float('reg_lambda', 0.001, 10.0),
'num_leaves': trial.suggest_int('num_leaves', 11, 333),
'min_child_samples': trial.suggest_int('min_child_samples', 5, 100),
'max_depth': trial.suggest_int('max_depth', 5, 64),
'learning_rate': trial.suggest_categorical('learning_rate', [0.005, 0.01, 0.02, 0.05, 0.1]),
'colsample_bytree': trial.suggest_float('colsample_bytree', 0.1, 0.5),
'n_estimators': trial.suggest_int('n_estimators', 2000, 8000),
'cat_smooth' : trial.suggest_int('cat_smooth', 10, 100),
'cat_l2': trial.suggest_int('cat_l2', 1, 20),
'min_data_per_group': trial.suggest_int('min_data_per_group', 50, 200),
}


# Additional parameters:
early_stop = 200
verbose_eval = 200
n_splits = 5


kfold = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=42)


oof_train = np.zeros((X_train.shape[0]))


i = 0
for train_index, valid_index in kfold.split(X_train, y_train):


X_tr = X_train.iloc[train_index, :]
X_val = X_train.iloc[valid_index, :]
y_tr = [y_train[i] for i in train_index]
y_val = [y_train[i] for i in valid_index]
print(Counter(y_tr), Counter(y_val))


d_train = lgb.Dataset(X_tr, label=y_tr, categorical_feature=cat_col)
d_valid = lgb.Dataset(X_val, label=y_val, categorical_feature=cat_col)
watchlist = [d_train, d_valid]


print('training LGB:')
model = lgb.train(params,
train_set=d_train,
valid_sets=watchlist,
verbose_eval=verbose_eval,
early_stopping_rounds=early_stop)


val_pred = model.predict(X_val, num_iteration=model.best_iteration)
oof_train[valid_index] = val_pred
i += 1


rmse = mean_squared_error(y_train, oof_train, squared=False)
return rmse


study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=2)
print('Number of finished trials: ', len(study.trials))
print('Best trial: ', study.best_trial.params)
print('Best value: ', study.best_value)
optuna.visualization.plot_slice(study).write_html(pathlib.Path('optuna_optimization_history.html'), include_plotlyjs='cdn')
2 views15:07
Открыть/Комментировать