Привет, друзья!
Поздравляю с нашим профессиональным праздников - 256-м днём в году!
Пока вайбкодинг ещё не вытеснил программеров в Data Science, и пока Python играет одну из ключевых ролей, давайте освежим важные особенности языка, которые часто спрашивают даже у сеньоров на собеседованиях✍️
1. Python со статической или динамической типизацией?
2. Разница между генераторами и итераторами?
3. В чем разница между yield и return?
4. А что такое декораторы и зачем они нужны?
5. Какие бывают пространства имен в Python?
6. Как передаются аргументы в функции - по значениям или по ссылке?
7. Как происходит управление памятью в Python?
8. Что такое GIL и разрешена ли многопоточность в Python?
9. Что такое дескриптор?
10. Как работает менеджер контекста with под капотом?
Кто все и так знал - ставьте 🐳
#python@data_easy
Поздравляю с нашим профессиональным праздников - 256-м днём в году!
Пока вайбкодинг ещё не вытеснил программеров в Data Science, и пока Python играет одну из ключевых ролей, давайте освежим важные особенности языка, которые часто спрашивают даже у сеньоров на собеседованиях
1. Python со статической или динамической типизацией?
Напомним разновидности:
- Статическая типизация (C++, Java): тип переменной задаётся заранее и проверяется до запуска программы.
- Динамическая типизация (Python, JavaScript): тип переменной определяется во время выполнения программы - а именно, в момент присваивания. В Python это происходит при исполнении соответствующей строки кода (ведь он интерпретируемый ), поэтому одна и та же переменная может в разные моменты хранить объекты разных типов.
2. Разница между генераторами и итераторами?
Вспомним, что итерируемый объект - это то, из чего можно последовательно доставать элементы (список, множество, строка).
Итератор - это «механизм перебора»: объект, который умеет по одному выдавать элементы итерируемого объекта. Для этого у него есть методы iter (возвращает сам итератор) и next возвращает следующий элемент)
Генератор — это удобный способ создать итератор. Его пишут через yield или в виде генераторного выражения. Главное отличие: генератор сам запоминает своё состояние между вызовами и продолжает работу с того места, где остановился.
3. В чем разница между yield и return?
return завершает функцию и возвращает одно значение.
yield приостанавливает функцию, возвращает значение, но сохраняет её состояние, чтобы можно было продолжить выполнение этой функции позже. Используется как раз для создания генераторов!
4. А что такое декораторы и зачем они нужны?
Декоратор - это вызываемый объект (функция или класс с call), который принимает другую функцию или класс и возвращает «обёрнутую» версию. То есть позволяет добавлять новое поведение к функциям/классам без изменения их кода (примеры: логирование, кеширование, измерение времени работы фунции).
5. Какие бывают пространства имен в Python?
Есть четыре уровня пространств имён:
- Local (локальное внутри функции)
- Enclosing (это локальное пространство переменных внешней функции, к которому может обращаться внутренняя функция, если она определена внутри этой внешней)
- Global (глобальное внутри модуля)
- Built-in (встроенные объекты Python).
Запоминается по правилу LEGB.
6. Как передаются аргументы в функции - по значениям или по ссылке?
В Python аргументы передаются по ссылке на объект, но сами ссылки копируются. Если объект изменяемый (список, словарь) - изменения видны и снаружи функции. Если неизменяемый (int, str, tuple) - создаётся новый объект.
7. Как происходит управление памятью в Python?
Python управляет памятью автоматически: у каждого объекта есть счётчик ссылок - когда на объект больше нет активных ссылок, память освобождается сразу. Для циклических ссылок (когда объекты ссылаются друг на друга) работает отдельный garbage collector, который периодически запускается в фоне.
8. Что такое GIL и разрешена ли многопоточность в Python?
GIL (Global Interpreter Lock) - это глобальная блокировка интерпретатора, которая не позволяет одновременно выполнять код в нескольких потоках. Поэтому для CPU-ограниченных задач многопоточность в Python не даёт прироста. Но она хорошо работает для задач ввода-вывода (I/O) и для вычислений внутри библиотек, реализованных на C/C++ (NumPy или Faiss), которые обходят GIL.
9. Что такое дескриптор?
Дескриптор - это объект с методами set/get/delete который управляет доступом к атрибуту другого класса. На дескрипторах реализованы property, методы класса, статические методы.
10. Как работает менеджер контекста with под капотом?
Менеджер контекста - это объект, у которого определены методы enter и exit. При входе в блок with вызывается enter, при выходе - exit, что гарантирует корректное освобождение ресурсов (например, закрытие файла).
Кто все и так знал - ставьте 🐳
#python@data_easy
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤24🔥10🐳7🎉3👍1🏆1
Привет, друзья!
Мы привыкли считать, что на табличных данных бустинг не победить: CatBoost, LightGBM и XGBoost долгие годы остаются золотым стандартом. Но последнее время появляется много нейросетевых моделей "из коробки" специально для таблиц, которые даже местами обгоняют классиков. Ниже - подборка трёх наиболее интересных архитектур.
🐱 TabM
Архитектура основана на MLP с параметрически-эффективным ансамблированием. Внутри одной сети обучаются несколько "виртуальных моделей", которые делят общие веса и отличаются только небольшими адаптер-модулями.
Сама модель от Яндекса, на больших бенчмарк-датасетах уверенно конкурирует с CatBoost и LightGBM.
✨ репозиторий на GitHub
✨ статья на arXiv
✨ демо в colab
🐱 TabPFN
Модель на базе трансформера, предобученного на огромном количестве синтетических таблиц. Работает как готовое универсальное решение "из коробки": вы подаёте данные, а она сразу выдаёт предсказания без длительного дообучения. Отлично подходит для малых и средних наборов данных, где нет времени или ресурсов на настройку.
✨ репозиторий на GitHub
✨ официальная страничка решения
✨ демо в colab
✨ статьи: оригинальная и более свежая про улучшенную версию
🐱 SAINT
Transformer-архитектура с вниманием не только по признакам, но и между самими объектами. Дополнительно использует контрастивное предобучение, что помогает лучше выделять структуру данных и устойчиво обучаться.
Особенно хороша на датасетах, где важно учитывать сложные зависимости между объектами, а также для задач с большим числом категориальных признаков.
✨ репозиторий на GitHub
✨ статья на arXiv
Судя по бенчмаркам, эти архитектуры полезны на больших и сложных таблицах с множеством признаков/категорий, где классический бустинг может упираться в ресурсы. На простых или небольших датасетах легендарное Boost-трио пока надёжнее и проще в настройке🐈 🐈 🐈
Удачных экспериментов и высоких метрик!
#classic_ml@data_easy
#dl@data_easy
Мы привыкли считать, что на табличных данных бустинг не победить: CatBoost, LightGBM и XGBoost долгие годы остаются золотым стандартом. Но последнее время появляется много нейросетевых моделей "из коробки" специально для таблиц, которые даже местами обгоняют классиков. Ниже - подборка трёх наиболее интересных архитектур.
Архитектура основана на MLP с параметрически-эффективным ансамблированием. Внутри одной сети обучаются несколько "виртуальных моделей", которые делят общие веса и отличаются только небольшими адаптер-модулями.
Сама модель от Яндекса, на больших бенчмарк-датасетах уверенно конкурирует с CatBoost и LightGBM.
Модель на базе трансформера, предобученного на огромном количестве синтетических таблиц. Работает как готовое универсальное решение "из коробки": вы подаёте данные, а она сразу выдаёт предсказания без длительного дообучения. Отлично подходит для малых и средних наборов данных, где нет времени или ресурсов на настройку.
Transformer-архитектура с вниманием не только по признакам, но и между самими объектами. Дополнительно использует контрастивное предобучение, что помогает лучше выделять структуру данных и устойчиво обучаться.
Особенно хороша на датасетах, где важно учитывать сложные зависимости между объектами, а также для задач с большим числом категориальных признаков.
Судя по бенчмаркам, эти архитектуры полезны на больших и сложных таблицах с множеством признаков/категорий, где классический бустинг может упираться в ресурсы. На простых или небольших датасетах легендарное Boost-трио пока надёжнее и проще в настройке
Удачных экспериментов и высоких метрик!
#classic_ml@data_easy
#dl@data_easy
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤7👏2👍1
Привет, друзья!
Сегодня - короткая подборка роадмапов и ресурсов по изучению DS-ML. Всё проверенное и пригодное для подготовки к интервью и планирования обучения.
🐾 Матрицы компетенций от AndersenLab
Показывает, какие навыки ожидаются на разных грейдах и уровнях, удобно для формирования чек-листа роста и оценки прогресса.
✨ ссылка (выбирайте Python в специализации и AI/DS/DE/ML в Skill category)
🐾 Machine Learning Roadmap от MachineLearningMastery
Большая пошаговая инструкция: от математики и базовых алгоритмов до продакшена и MLOps, где расписаны все шаги со ссылками на книги, полезные статьи и курсы.
✨ ссылка
🐾 Deep-ML - практические ML/DL задачки
Онлайн-платформа с наборами реальных задач по ML/DL/NLP/CV. Формат близок к продакшену: нужно думать не только о модели, но и о фичах, пайплайнах, метриках. Есть задания для прокачки инженерных навыков.
✨ ссылка
🐾 NeetCode - roadmap + LeetCode-style подготовка
Сайт, посвященный алгоритмам и структурам данных: задачи собраны в тематические дорожки (arrays, trees, graphs и т.д.), есть разборы и объяснения. По духу похож на LeetCode, но структурированнее и понятнее для быстрой подготовки.
✨ ссылка
😎 Рецепт, как собрать из этого рабочий план:
1. Берём матрицу компетенций, отмечаем свои навыки и пробелы, получаем список приоритетов.
2. По роадмапам строим порядок изучения и выбираем подходящие ресурсы.
3. Подключаем практику: задачи на Deep-ML, вопросы для повторения, тренировка алгоритмов и структур.
А ещё на прошедшей неделе в канале стукнуло💯 подписчиков!
Спасибо каждому, кто читает, комментирует, задаёт вопросы и просто остаётся здесь.
Этот канал начинался как небольшой личный проект, а превратился в сообщество, где можно вместе учиться и расти в Data Science.
Дальше - больше💜
#карьера@data_easy
Сегодня - короткая подборка роадмапов и ресурсов по изучению DS-ML. Всё проверенное и пригодное для подготовки к интервью и планирования обучения.
Показывает, какие навыки ожидаются на разных грейдах и уровнях, удобно для формирования чек-листа роста и оценки прогресса.
✨ ссылка (выбирайте Python в специализации и AI/DS/DE/ML в Skill category)
Большая пошаговая инструкция: от математики и базовых алгоритмов до продакшена и MLOps, где расписаны все шаги со ссылками на книги, полезные статьи и курсы.
✨ ссылка
Онлайн-платформа с наборами реальных задач по ML/DL/NLP/CV. Формат близок к продакшену: нужно думать не только о модели, но и о фичах, пайплайнах, метриках. Есть задания для прокачки инженерных навыков.
✨ ссылка
Сайт, посвященный алгоритмам и структурам данных: задачи собраны в тематические дорожки (arrays, trees, graphs и т.д.), есть разборы и объяснения. По духу похож на LeetCode, но структурированнее и понятнее для быстрой подготовки.
✨ ссылка
1. Берём матрицу компетенций, отмечаем свои навыки и пробелы, получаем список приоритетов.
2. По роадмапам строим порядок изучения и выбираем подходящие ресурсы.
3. Подключаем практику: задачи на Deep-ML, вопросы для повторения, тренировка алгоритмов и структур.
А ещё на прошедшей неделе в канале стукнуло
Спасибо каждому, кто читает, комментирует, задаёт вопросы и просто остаётся здесь.
Этот канал начинался как небольшой личный проект, а превратился в сообщество, где можно вместе учиться и расти в Data Science.
Дальше - больше💜
#карьера@data_easy
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥18❤🔥11❤8🥰2⚡1🏆1