TGViewer
Maxim.ML - канал Maxim.ML - канал @ml_maxim · 1.06K subscribers
Post #15 545
#пятничная_визуализация

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

(ссылки на крутые визуализации)
1️⃣ https://poloclub.github.io/transformer-explainer/
2️⃣ https://bbycroft.net/llm
3️⃣ https://playground.tensorflow.org/

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

Эта публикация - первая в своей серии, в новом году будет еще больше! Всех с наступающим Новым годом! 🎁

---

Здесь я визуализирую жизненный цикл ML модели. Про это понятие у меня есть отдельная публикация: (https://habr.com/ru/companies/citymobil/articles/572184/)

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

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors


def foo_y(theta, k=0.5, s=1.5):
return - (theta**2 - s)**2 - k * theta


plt.rcParams["figure.facecolor"] = "#DBF1E4"
plt.rcParams["axes.facecolor"] = "#DBF1E4"
plt.rcParams['savefig.facecolor'] = "#DBF1E4"

custom_cmap = mcolors.LinearSegmentedColormap.from_list(
'my_cmap', ["#BA2A1D", "#62C361"]
)

theta_vals = np.linspace(-1., 2, 400)

coef_pairs = [
(0.1, 0.05),
(2, 0.05),
(0.2, 0.1),
(0.5, 0.9),
(1.1, 1.1),
(1.4, 1.5),
(2, 2),
]

plt.figure(figsize=(10, 5))
for idx, one_pair in enumerate(coef_pairs):
plt.plot(
theta_vals,
[foo_y(i, *one_pair) for i in theta_vals]
, color=custom_cmap(idx / len(coef_pairs))
, linewidth=3
, label=f'модель {idx+1}'
)

plt.yticks(
ticks=np.linspace(-20, 1, 10)
, labels=np.round(np.linspace(0.6, 0.8, 10), 2)
)
plt.xticks(
ticks=theta_vals[:: 40]
, labels=[f'неделя {i+1}' for i in range(len(theta_vals[:: 40]))]
, rotation=25

)
plt.gca().set_frame_on(False)

plt.grid()
plt.ylabel('метрика ROC AUC', fontsize=12)
plt.title('стабильность модели', fontsize=15)
plt.legend()
plt.tight_layout()
plt.savefig(
'Downloads/stability_2.png',
dpi=150, format='png', bbox_inches='tight', pad_inches=0,
transparent=False
)
  • 👍 4
  • 🔥 3
  • ❤ 1
More from @ml_maxim
  1. Sep 23, 2026У меня было много образовательных активностей: преподавал школьникам, студентам и олимпиад…
  2. Sep 17, 2026Тут huawei выпустила отчёт intelligent world 2035, там целых 10 смелых прогнозов, советую…
  3. Sep 14, 2026Показательно получилось 🛌 Вчера таки написал на habr про то, как легко теперь копировать…
  4. Sep 11, 2026Сходил за сырниками, а пришлось анализировать данные 📈 В магазине играла знакомая песня.…
  5. Sep 8, 2026Выхожу из декретного творческого отпуска 🛌 и сразу рассказываю свои апдейты и новости, на…
  6. Apr 14, 2026Архитектуру построили. А ML - нет 🤷‍♂️ Завершился наш с Никитой модуль по AI-агентам в ВШ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →