Для работы с данными нужны базовые математические знания. В первой статье нашего путеводителя разбираем ключевые символы и термины Data Science.
В выпуске:
• действительные и комплексные числа,
• векторы и матрицы,
• компактная запись сумм и произведений (сигма- и пи-нотация),
• обзор логарифмов.
Начинаем с основ, чтобы уверенно двигаться к сложным темам!
▶️ Читайте по ссылке: https://proglib.io/sh/pSwegRq1o0
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Учёные начали встраивать скрытые промпты для ИИ в научные статьи, чтобы ChatGPT и ему подобные ставили их работам 5 звёздочек и ни слова плохого не говорили.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 Топ-5 библиотек для объяснения ML моделей
🟢 SHAP (Shapley Additive Explanations)
Один из самых популярных методов объяснения модели на основе вкладов признаков.
🟢 LIME (Local Interpretable Model-agnostic Explanations)
Модель-агностичный подход, который обучает локальную интерпретируемую модель вокруг конкретного предсказания.
🟢 Eli5 (Explain Like I’m Five)
Упрощённое объяснение сложных ML-моделей, поддержка scikit-learn, Keras и других фреймворков.
🟢 AI Explainability 360 (AIX360)
Библиотека от IBM для объяснения моделей на различных типах данных: табличных, текстовых, изображениях и временных рядах.
🟢 InterpretML
Инструмент от Microsoft, который включает как интерпретируемые «прозрачные» модели, так и объяснители для «чёрных ящиков».
Proglib Academy #буст
🟢 SHAP (Shapley Additive Explanations)
Один из самых популярных методов объяснения модели на основе вкладов признаков.
🟢 LIME (Local Interpretable Model-agnostic Explanations)
Модель-агностичный подход, который обучает локальную интерпретируемую модель вокруг конкретного предсказания.
🟢 Eli5 (Explain Like I’m Five)
Упрощённое объяснение сложных ML-моделей, поддержка scikit-learn, Keras и других фреймворков.
🟢 AI Explainability 360 (AIX360)
Библиотека от IBM для объяснения моделей на различных типах данных: табличных, текстовых, изображениях и временных рядах.
🟢 InterpretML
Инструмент от Microsoft, который включает как интерпретируемые «прозрачные» модели, так и объяснители для «чёрных ящиков».
Proglib Academy #буст
❤1
🧠 Математика для Data Science: с чего начать
Если вы хотите уверенно читать статьи, книги и документацию по Data Science, без знания математического языка не обойтись. Но с чего начать, чтобы не утонуть в формулах?
🎁 Мы запускаем серию статей, где по шагам разберем все ключевые темы: от базовых обозначений до сложных алгоритмов.
🔗 Читайте первую статью
Proglib Academy #буст
Если вы хотите уверенно читать статьи, книги и документацию по Data Science, без знания математического языка не обойтись. Но с чего начать, чтобы не утонуть в формулах?
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Когда Django-запросы вытягивают из базы больше данных, чем нужно, это тормозит работу приложения. Чтобы ускорить выполнение и уменьшить нагрузку, можно использовать методы:
defer()
— откладывает загрузку указанных полей до их фактического использования only()
— загружает только указанные поля, остальные — по запросу exclude()
— фильтрует объекты, исключая ненужныеВ статье — практические примеры на базе веб-приложения для агентства недвижимости: как применять эти методы, чтобы получать только нужные данные и ускорять запросы.
🔗 Подробнее в статье
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🙏1
🔥 RFID в непростых условиях: как НЛМК отслеживает ковши с расплавленным чугуном
В металлургии счет идет на секунды: чугун остывает, оборудование простаивает, деньги улетают. Раньше НЛМК отслеживал ковши «по старинке» — звонками и рациями.
Теперь каждый ковш «умный»: система знает, где он находится, какая у него температура и куда движется. Спойлер:экономия огромная .
🦾 Иван Клестов-Надеев, главный специалист по цифровизации коксохимического, доменного и энергетического производства НЛМК, делится опытом реализации этой системы совместно со специалистами НЛМК ИТ
Proglib Academy #буст
В металлургии счет идет на секунды: чугун остывает, оборудование простаивает, деньги улетают. Раньше НЛМК отслеживал ковши «по старинке» — звонками и рациями.
Теперь каждый ковш «умный»: система знает, где он находится, какая у него температура и куда движется. Спойлер:
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1🙏1
Учить сложные темы бывает непросто, но что, если можно разбить их на простые и понятные части? Делимся мощным промптом для ChatGPT, который поможет разобраться в любом сложном аспекте Python — от асинхронности до метапрограммирования.
I need help breaking down [конкретная тема] into smaller, simpler parts that are easier to understand.
Identify the most important 20% of learnings that will help me understand 80% of the subject.
Use analogies and real-life examples to explain each concept in a relatable way.
The explanation should focus on making the topic clear and engaging while connecting it to everyday experiences or situations.
Additionally, suggest tips or questions I can use to check my understanding of the material.
— Разбивает сложную тему на ключевые 20% знаний, которые дадут 80% понимания
— Приводит аналоги и примеры из жизни (например, асинхронность как готовка в ресторане)
— Помогает проверить себя, предлагая вопросы для самопроверки
— Разобраться в
asyncio
через повседневные сценарии — Понять работу
metaclass
с аналогиями из конструкторов LEGO — Прояснить
decorators
, представив их как модульные дополнения в кафеProglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🙏1
Сбер на GigaConf показал GigaStudio — штуку, которая сама делает веб-приложения из текстового описания. Просто пишешь в чат: «хочу сайт с формой регистрации» — и получаешь готовый проект. Да, прям так.
Работает на GitVerse — это не игрушка, а серьёзная платформа для разработчиков: CI/CD, приватные репы, Jupyter, API, всё на месте.
— быстро делать MVP и прототипы
— вкатиться в ИТ без кучи хардскиллов
— или просто не тратить вечность на шаблонную верстку
А ещё добавили сборки в облаке, поддержку Data Science и API для автоматизации.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🥱1
🧠 От конкурентного программирования к производству
Есть проекты, где смена всего одного неудачного алгоритма в корне меняет картину. Внезапно запросы начинают выполняться за миллисекунды, а пользователи перестают жаловаться на «тормоза». Обычно такие решения находят программисты, которые участвовали в соревнованиях по спортивному программированию.
➡️ Сегодня рассказываем, почему их мышление помогает в реальной работе.
Proglib Academy #буст
Есть проекты, где смена всего одного неудачного алгоритма в корне меняет картину. Внезапно запросы начинают выполняться за миллисекунды, а пользователи перестают жаловаться на «тормоза». Обычно такие решения находят программисты, которые участвовали в соревнованиях по спортивному программированию.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚1
В Python
break
в циклах for
прерывает итерацию, но часто есть более читаемые и лаконичные способы. Разберём типичные случаи и их альтернативы.Классика с
break
:color_options = ["blue", "green", "purple"]
is_purple_an_option = False
for color in color_options:
if color == "purple":
is_purple_an_option = True
break
Альтернатива — оператор
in
:is_purple_an_option = "purple" in color_options
in
работает со всеми итерируемыми объектами, а для set
и dict
ещё и быстрее, чем цикл.Пример с
break
:points_per_user = [3, 12, 28, 105]
anyone_has_100 = False
for points in points_per_user:
if points > 100:
anyone_has_100 = True
break
Альтернатива —
any
:anyone_has_100 = any(points > 100 for points in points_per_user)
any
(или all
для "все элементы") делает код выразительнее.С
break
:words = ["Look", "at", "these", "excellent", "words"]
first_long_word = None
for word in words:
if len(word) > 4:
first_long_word = word
break
Альтернатива —
next
с генератором:long_words = (word for word in words if len(word) > 4)
first_long_word = next(long_words, None)
next
берёт первый элемент из генератора, а None
— значение по умолчанию, если ничего не найдено.С
break
:items = ["chair", "desk", "", "lamp"]
before_blank = []
for item in items:
if not item:
break
before_blank.append(item)
Альтернатива —
itertools.takewhile
:from itertools import takewhile
before_blank = list(takewhile(bool, items))
takewhile
собирает элементы, пока условие истинно, и возвращает итератор.break
полезен, но часто его можно заменить:—
in
— для проверки наличия—
any/all
— для условий—
next
— для поиска первого значения—
takewhile
— для сбора до условияbreak
?Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
🔥 Как НЛМК отслеживает ковши с расплавленным чугуном — и зачем это нужно
Раньше ковши искали по рации. Сегодня — за ними следит цифровая система: знает, где каждый ковш, сколько в нём чугуна, куда он движется и не перегрелась ли футеровка.
В новом кейсе рассказываем:
— почему стандартные RFID-метки плавились и что сделали вместо
— как устроена цифровая модель предприятия
— что даёт это внедрение: меньше простоев, теплопотерь и аварий
👷♂️ Спойлер:теперь даже ковши «думают».
📌 Читать: https://proglib.io/sh/mXKzViUZen
Proglib Academy #буст
Раньше ковши искали по рации. Сегодня — за ними следит цифровая система: знает, где каждый ковш, сколько в нём чугуна, куда он движется и не перегрелась ли футеровка.
В новом кейсе рассказываем:
— почему стандартные RFID-метки плавились и что сделали вместо
— как устроена цифровая модель предприятия
— что даёт это внедрение: меньше простоев, теплопотерь и аварий
👷♂️ Спойлер:
📌 Читать: https://proglib.io/sh/mXKzViUZen
Proglib Academy #буст
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 How to: как работают генераторы в Python
Генераторы — мощный инструмент для итераций, особенно при работе с большими данными. В отличие от обычных функций, они вычисляют значения лениво, выдавая их по запросу и экономя память. Это делает код более эффективным и удобным для повторного использования.
➡️ Принцип работы
Вместо возврата всех значений сразу, генератор использует
При вызове
➡️ Пример: Фибоначчи на генераторах
Такой генератор можно использовать для обработки больших последовательностей без лишних затрат памяти.
➡️ Генераторы vs. списки
Генераторы экономят память, так как не хранят все элементы в памяти:
Разница очевидна: генератор занимает всего 208 байт, тогда как список — 8+ мегабайт!
➡️ Генераторные выражения
Аналогично списковым включениям, но работают лениво:
➡️ Комбинирование генераторов
С помощью itertools генераторы можно объединять и фильтровать:
➡️ Когда использовать генераторы
— Обработка больших данных без перегрузки памяти
— Потоковая обработка (например, чтение файлов)
— Создание бесконечных последовательностей
— Оптимизация скорости и эффективности кода
Proglib Academy #буст
Генераторы — мощный инструмент для итераций, особенно при работе с большими данными. В отличие от обычных функций, они вычисляют значения лениво, выдавая их по запросу и экономя память. Это делает код более эффективным и удобным для повторного использования.
Вместо возврата всех значений сразу, генератор использует
yield
, который приостанавливает выполнение функции, сохраняя её состояние:def simple_generator():
print("Первый yield")
yield 1
print("Второй yield")
yield 2
gen = simple_generator()
print(next(gen)) # Первый yield → 1
print(next(gen)) # Второй yield → 2
При вызове
next()
выполнение продолжается с места, где остановилось. Это позволяет работать с последовательностями, не загружая их полностью в память.def fibonacci_generator(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b
Такой генератор можно использовать для обработки больших последовательностей без лишних затрат памяти.
Генераторы экономят память, так как не хранят все элементы в памяти:
import sys
def list_numbers(n):
return [i for i in range(n)]
def generator_numbers(n):
return (i for i in range(n))
print(sys.getsizeof(list_numbers(1000000))) # 8448728 байт
print(sys.getsizeof(generator_numbers(1000000))) # 208 байт
Разница очевидна: генератор занимает всего 208 байт, тогда как список — 8+ мегабайт!
Аналогично списковым включениям, но работают лениво:
squares_list = [x * x for x in range(10)] # Обычный список
squares_gen = (x * x for x in range(10)) # Генератор
С помощью itertools генераторы можно объединять и фильтровать:
from itertools import chain, filterfalse
result = chain((x * x for x in range(10)), (y + 10 for y in range(5)))
odd_squares = filterfalse(lambda x: x % 2 == 0, (x * x for x in range(10)))
— Обработка больших данных без перегрузки памяти
— Потоковая обработка (например, чтение файлов)
— Создание бесконечных последовательностей
— Оптимизация скорости и эффективности кода
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Алгоритмы — не «для олимпиадников». Это то, что делает твой код быстрым.
Не на 5%, а в 10–100 раз.
Вот что реально помогает:
— выбрал другой алгоритм — и лагов нет,
— думаешь про сложность — и не пишешь мусор,
— знаешь про Trie, префиксные суммы, LRU — и у тебя всё летает.
Не гадай, где узкое место. Мерь. Оптимизируй. Ускоряй.
https://proglib.io/sh/BZ6EzqDbaW
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🙏1
1. Проблема не в мотивации. Проблема в хаосе. Нет среды = нет привычки = нет прогресса.
2. У тебя может быть даже Mac за 200к, но без чёткой системы ты всё равно будешь прокрастинировать.
3. Начни с малого:
– Выдели 30 минут в день на код.
– Веди журнал — что учил, что пробовал.
– Учи 1 тему → решай 2 задачи → пиши 1 комментарий к чужому коду.
4. Создай пространство, где ты — разработчик:
– даже если это Telegram-чат с собой;
– даже если ты пишешь код в Google Keep или бумажной тетрадке.
Ритуал важнее инструмента.
5. Среда — это не железо. Это:
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Частый вопрос от новичков: «Чем вообще отличается Vite от Webpack и зачем всё это нужно?»
— Чем Vite ускоряет разработку в разы (и где подводные камни);
— Почему Webpack до сих пор топ для enterprise-проектов;
— Как настроить оба сборщика — пошагово, с примерами кода;
— Какую систему выбрать для своего pet-проекта, а какую — для продакшена.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 How to: как настроить Gradient Boosting
Не выбирайте слишком много гиперпараметров. Достаточно этих пяти:
✔️ learning rate, глубина деревьев, количество деревьев, subsample ratio, L1/L2-регуляризация.
Учитывайте взаимосвязь параметров:
✔️ Меньший learning rate → нужно больше деревьев.
✔️ Глубокие деревья → нужен меньший learning rate.
Как настраивать:
✔️ Фиксируем 500–1000 деревьев.
✔️ Тюним learning rate, глубину и другие параметры.
✔️ Используем раннюю остановку (15–20 итераций без улучшений).
Полезные рекомендации:
✔️ Learning rate: 0.001–0.05, по умолчанию 0.01.
✔️ Размер датасета: для маленьких → деревья 1–3, для больших → 4–6.
✔️ Регуляризация: L2 — для коррелированных фич, L1 — для отбора важных.
✔️ subsample: 0.1–0.7, по умолчанию 0.5.
✔️ k-fold CV обязателен, для временных рядов — nested sliding CV.
🔥 Какой совет был полезен? Делитесь!
Proglib Academy #буст
Не выбирайте слишком много гиперпараметров. Достаточно этих пяти:
✔️ learning rate, глубина деревьев, количество деревьев, subsample ratio, L1/L2-регуляризация.
Учитывайте взаимосвязь параметров:
✔️ Меньший learning rate → нужно больше деревьев.
✔️ Глубокие деревья → нужен меньший learning rate.
Как настраивать:
✔️ Фиксируем 500–1000 деревьев.
✔️ Тюним learning rate, глубину и другие параметры.
✔️ Используем раннюю остановку (15–20 итераций без улучшений).
Полезные рекомендации:
✔️ Learning rate: 0.001–0.05, по умолчанию 0.01.
✔️ Размер датасета: для маленьких → деревья 1–3, для больших → 4–6.
✔️ Регуляризация: L2 — для коррелированных фич, L1 — для отбора важных.
✔️ subsample: 0.1–0.7, по умолчанию 0.5.
✔️ k-fold CV обязателен, для временных рядов — nested sliding CV.
🔥 Какой совет был полезен? Делитесь!
Proglib Academy #буст
❤3👍1
В новом материале — пошаговая настройка Jest и React Testing Library для проектов на React и Next.js.
— Как настроить jest.config.ts без боли
— Как подключить @testing-library и писать тесты с render и screen
— Как запускать тесты даже с SVG и SCSS
— Как фиксить типовые ошибки с describe и expect
И главное — всё это с комментариями «почему именно так», а не просто копипастой из stackoverflow.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Используйте этот промпт для построения графиков с помощью Matplotlib.
🔹 Промпт:
I want you to act as a data scientist coding in Python. Given a dataframe {dataframe name} containing the columns {column names}, use Matplotlib to plot a {chart type} that shows the relationship between {variables}. Additionally, annotate the plot with the following details: {annotation requirements}. Format the plot by adjusting {specific formatting preferences}. Finally, change the plot's theme to {theme} to match the visual style of {theme description}.
Результат:
🔹 Качественные и профессиональные визуализации данных.
🔹 Подробное оформление и аннотации на графиках.
🔹 Удобное и понятное оформление графиков с использованием популярных тем.
✔️ Пример:
Исходный датафрейм с данными о возрасте, доходе и уровне образования:
import pandas as pd
data = {
'age': [25, 30, 35, 40, 45],
'income': [50000, 60000, 70000, 80000, 90000],
'education_level': ['Bachelors', 'Masters', 'PhD', 'Bachelors', 'Masters']
}
df = pd.DataFrame(data)
💬 Пример использования промпта:
I want you to act as a data scientist coding in Python. Given a dataframe df containing the columns ['age', 'income', 'education_level'], use Matplotlib to plot a scatter plot that shows the relationship between age and income. Additionally, annotate the plot with the following details: highlight the highest and lowest income values. Format the plot by adjusting the title, axis labels, and grid lines. Finally, change the plot's theme to seaborn-darkgrid to match the visual style of a clean and modern plot with dark gridlines.
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
В этом посте рассмотрим лучшие практики импорта модулей в Python, чтобы код был чистым и эффективным.
Старайтесь использовать явный импорт, а не
from module import *
, чтобы избежать конфликтов имен и улучшить читаемость кода.# Плохо
from math import *
# Хорошо
from math import sqrt, pi
Явный импорт помогает лучше понять, какие именно функции или классы используются в вашем коде, и предотвращает «загрязнение» пространства имен.
Существует стандартная практика группировки импортов, которая улучшает структуру кода и делает его более читаемым:
Каждая группа должна быть разделена пустой строкой. Такой порядок помогает быстро понять, какие библиотеки используются, и позволяет легко ориентироваться в коде.
# Стандартные библиотеки
import os
import sys
# Третьи библиотеки
import requests
import numpy as np
# Локальные модули
from my_module import my_function
Абсолютные импорты — это указание полного пути до модуля, начиная от корня пакета. Это делает код более понятным и избегает проблем с относительными импортами, особенно в крупных проектах.
# Плохо
from .module import function
# Хорошо
from my_project.module import function
Циклические импорты — это когда два или более модуля зависят друг от друга, что может привести к ошибкам при импорте.
Чтобы избежать таких проблем:
# Плохо
# module_a.py
from module_b import function_b
# module_b.py
from module_a import function_a
# Хорошо
# module_a.py
def function_a():
from module_b import function_b
...
Импортируйте только те модули, функции или классы, которые действительно будут использованы в коде. Это улучшает производительность и делает код чище.
# Плохо
import math
# Хорошо
from math import sqrt
Если библиотека часто используется в коде, имеет смысл использовать псевдонимы, чтобы сделать код компактным.
# Хорошо
import numpy as np
import pandas as pd
# Плохо
import numpy
import pandas
В случае, если библиотека может не быть установлена в окружении, полезно обрабатывать ошибки импорта, чтобы избежать сбоев в работе программы.
try:
import some_library
except ImportError:
print("Не удалось импортировать some_library. Убедитесь, что она установлена.")
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧗 9 способов продвинуть резюме в ТОП на HeadHunter
Вы думали, что главное — это писать код и знать SOLID? Ха! Главное — уметь поднимать резюме в 11:00 и 15:00, как cron-джобу 🕒
➡️ В статье разобрали топ-лайфхаки, чтобы ваше резюме не пылилось в подвале HeadHunter’а
Proglib Academy #буст
Вы думали, что главное — это писать код и знать SOLID? Ха! Главное — уметь поднимать резюме в 11:00 и 15:00, как cron-джобу 🕒
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1