Как обучить свою первую ML-модель — и не утонуть в теории?
Машинное обучение звучит сложно — пока вы не попробуете на практике. 24 ноября в 18:00 МСК на открытом уроке вы обучите модель для задачи классификации прямо во время занятия.
Разберём:
– как работает алгоритм дерева решений;
– как решать задачи классификации на Python;
– что нужно, чтобы перейти от экспериментов к реальной работе с ML.
Вы шаг за шагом создадите первую модель, увидите, как она принимает решения, и поймёте, как из простого кода рождается интеллект.
➡️ Открытый урок проходит в преддверии старта курса «Machine Learning. Basic». Регистрируйтесь — начните путь в Data Science с практики, а не с теории:
https://otus.pw/iOTK/?erid=2W5zFJdCjix
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Машинное обучение звучит сложно — пока вы не попробуете на практике. 24 ноября в 18:00 МСК на открытом уроке вы обучите модель для задачи классификации прямо во время занятия.
Разберём:
– как работает алгоритм дерева решений;
– как решать задачи классификации на Python;
– что нужно, чтобы перейти от экспериментов к реальной работе с ML.
Вы шаг за шагом создадите первую модель, увидите, как она принимает решения, и поймёте, как из простого кода рождается интеллект.
➡️ Открытый урок проходит в преддверии старта курса «Machine Learning. Basic». Регистрируйтесь — начните путь в Data Science с практики, а не с теории:
https://otus.pw/iOTK/?erid=2W5zFJdCjix
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
❤8😁1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Хитрый трюк по работе со статикой
Если заранее посчитать ETag для статических файлов, сервер сможет мгновенно отвечать 304 Not Modified без чтения с диска. Это резко ускоряет отдачу статики на Python.
Если заранее посчитать ETag для статических файлов, сервер сможет мгновенно отвечать 304 Not Modified без чтения с диска. Это резко ускоряет отдачу статики на Python.
import os, hashlib
from http.server import SimpleHTTPRequestHandler, HTTPServer
STATIC = "static"
etag = {f: hashlib.md5(open(os.path.join(STATIC, f),"rb").read()).hexdigest()
for f in os.listdir(STATIC)}
class H(SimpleHTTPRequestHandler):
def end_headers(self):
name = self.path.lstrip("/")
if name in etag:
self.send_header("ETag", etag[name])
super().end_headers()
HTTPServer(("0.0.0.0", 8000), H).serve_forever()
❤17🔥5👍4😁3
This media is not supported in your browser
VIEW IN TELEGRAM
Чтобы сильно упростить очистку Python-кода, вынеси мелкие предикаты, фильтры и маппинги в именованные функции. Это делает пайплайны короче, уменьшает вложенность и ускоряет отладку. Такой приём особенно полезен, когда список операций растёт и становится нечитаемым. Подписывайся, больше фишек каждый день !
def is_valid(user):
return user.get("active") and user.get("role") != "banned"
def normalize(user):
user["name"] = user["name"].strip().title()
return user
def enrich(user):
user["score"] = user.get("score", 0) + 10
return user
users = [... ] # внешний источник
cleaned = [enrich(normalize(u)) for u in users if is_valid(u)]
print(cleaned)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍7😁3🤩2
Эмма Смит и Кирилл Подопригора из core-team Python опубликовали предварительное предложение (Pre-PEP), в котором описывается план постепенного внедрения Rust в кодовую базу CPython.
На первом этапе Rust хотят использовать для необязательных модулей стандартной библиотеки, находящихся в каталоге Modules/.
Дальше — больше: если эксперимент окажется успешным, то к выходу Python 3.17 Rust может стать обязательной сборочной зависимостью. Это позволит улучшить безопасность, производительность и надёжность низкоуровневых частей интерпретатора.
Подробнее: https://peps.python.org/pep-0011/
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15😱10👍6🔥3😁1
🚀 django-keel - мощный стартовый шаблон для Django-проектов
💡 Что это такое
Готовый современный каркас для Django-приложений, который позволяет запускать новый проект за минуты — с правильной архитектурой, CI, Docker и продуманной конфигурацией.
🔥 Что внутри
- Поддержка Python 3.12+ и Django 5.2+
- Несколько видов проектов: SaaS, API-backend, web-app, internal tools
- Docker + Docker Compose
- Настроенные линтеры, тесты, coverage и GitHub Actions
- 12-factor конфигурация, разделённые settings (dev/test/prod)
- Варианты API: DRF или GraphQL
- Поддержка фронта: Next.js или HTMX + Tailwind
🎯 Почему стоит использовать
- Экономит недели рутинной настройки
- Даёт единообразную и поддерживаемую архитектуру
- Ускоряет разработку MVP, внутренних сервисов и SaaS-продуктов
🛠 Быстрый старт
Репозиторий: https://github.com/CuriousLearner/django-keel
@pythonl
💡 Что это такое
Готовый современный каркас для Django-приложений, который позволяет запускать новый проект за минуты — с правильной архитектурой, CI, Docker и продуманной конфигурацией.
🔥 Что внутри
- Поддержка Python 3.12+ и Django 5.2+
- Несколько видов проектов: SaaS, API-backend, web-app, internal tools
- Docker + Docker Compose
- Настроенные линтеры, тесты, coverage и GitHub Actions
- 12-factor конфигурация, разделённые settings (dev/test/prod)
- Варианты API: DRF или GraphQL
- Поддержка фронта: Next.js или HTMX + Tailwind
🎯 Почему стоит использовать
- Экономит недели рутинной настройки
- Даёт единообразную и поддерживаемую архитектуру
- Ускоряет разработку MVP, внутренних сервисов и SaaS-продуктов
🛠 Быстрый старт
copier copy gh:CuriousLearner/django-keel my-project
Репозиторий: https://github.com/CuriousLearner/django-keel
@pythonl
1❤9👍6🔥2🤩1
🚀 GigaChat Ultra & Lightning — новые MoE-модели от Сбера
💡 Что это такое
Две открытые модели нового поколения, обученные с нуля — без чужих весов. Созданы, чтобы ускорять разработку, уменьшать рутину и быть удобным напарником для разработчиков.
🔥 Что внутри
- Ultra: 702B параметров, контекст до 131k, стабильная работа экспертов
- Lightning: 10B параметров, контекст до 256k, лёгкая и быстрая
- Генерация нескольких токенов одновременно
- Экономия памяти, оптимизация KV-кеша
- Совместимость с Hugging Face, vLLM и SGLang
🎯 Почему стоит использовать
- Сбер снимает часть технических забот, чтобы сосредоточиться на экспериментах
- Ускоряет локальное прототипирование и работу с AI-помощниками
- Подходит для масштабных решений и небольших проектов
@pythonl
💡 Что это такое
Две открытые модели нового поколения, обученные с нуля — без чужих весов. Созданы, чтобы ускорять разработку, уменьшать рутину и быть удобным напарником для разработчиков.
🔥 Что внутри
- Ultra: 702B параметров, контекст до 131k, стабильная работа экспертов
- Lightning: 10B параметров, контекст до 256k, лёгкая и быстрая
- Генерация нескольких токенов одновременно
- Экономия памяти, оптимизация KV-кеша
- Совместимость с Hugging Face, vLLM и SGLang
🎯 Почему стоит использовать
- Сбер снимает часть технических забот, чтобы сосредоточиться на экспериментах
- Ускоряет локальное прототипирование и работу с AI-помощниками
- Подходит для масштабных решений и небольших проектов
@pythonl
❤14👍6🔥5
🚀 myfy - модульный Python-фреймворк с фронтендом «из коробки»
Зачем он нужен: FastAPI - идеален для API, но без нормального фронта.
myfy берёт лучшее из FastAPI и добавляет полноценную модульность, DI и встроенный UI.
🔥 Главное
- Модульная архитектура с жизненным циклом (`start/stop`)
- Type-based DI без скрытой магии
- Фронтенд сразу из коробки:
Jinja2 + DaisyUI + Tailwind + Vite + HMR
Можно делать UI без React/Vue, идеально для внутренних тулов
- Чистая структура проекта, минимум бойлерплейта
🚀 Быстрый старт
https://github.com/psincraian/myfy
@pythonl
Зачем он нужен: FastAPI - идеален для API, но без нормального фронта.
myfy берёт лучшее из FastAPI и добавляет полноценную модульность, DI и встроенный UI.
🔥 Главное
- Модульная архитектура с жизненным циклом (`start/stop`)
- Type-based DI без скрытой магии
- Фронтенд сразу из коробки:
Jinja2 + DaisyUI + Tailwind + Vite + HMR
Можно делать UI без React/Vue, идеально для внутренних тулов
- Чистая структура проекта, минимум бойлерплейта
🚀 Быстрый старт
pip install myfy
myfy init
myfy frontend init
myfy run
https://github.com/psincraian/myfy
@pythonl
❤16👍7🔥3😁2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 10 однострочных Python-функций, которые экономят время каждый день
Держи небольшой набор из 10 функций-однострочников, которые полезно просто закинуть в свой utils.py.
Они помогают быстро работать со списками, файлами, JSON, статистикой и частотами, без лишнего шума в коде.
Скопируй блок целиком и используй нужные функции по месту.
@pythonl
Держи небольшой набор из 10 функций-однострочников, которые полезно просто закинуть в свой utils.py.
Они помогают быстро работать со списками, файлами, JSON, статистикой и частотами, без лишнего шума в коде.
Скопируй блок целиком и используй нужные функции по месту.
from pathlib import Path
from collections import Counter
import json, statistics as stats
chunks = lambda it, n: [it[i:i + n] for i in range(0, len(it), n)]
flatten = lambda lst: [x for sub in lst for x in sub]
unique = lambda seq: list(dict.fromkeys(seq))
sliding = lambda it, n: [it[i:i + n] for i in range(len(it) - n + 1)]
freqs = lambda seq: Counter(seq)
read_text = lambda p: Path(p).read_text(encoding="utf-8")
write_text = lambda p, text: Path(p).write_text(text, encoding="utf-8")
read_json = lambda p: json.loads(Path(p).read_text(encoding="utf-8"))
write_json = lambda p, obj: Path(p).write_text(json.dumps(obj, ensure_ascii=False, indent=2), encoding="utf-8")
mean_std = lambda xs: (stats.mean(xs), stats.pstdev(xs))
@pythonl
❤19👍11😁4🔥3
🧵 CPython 3.15 делает распаковку данных намного быстрее
В новой версии CPython улучшили производительность декомпрессии:
- Zstandard (zstd) распаковывается на 25–30% быстрее
- zlib — на 10–15% быстрее, если размер данных больше 1 MiB
Такого ускорения добились за счёт более эффективной работы с выходными буферами во время распаковки.
Подробнее: emmatyping.dev/decompression-is-up-to-30-faster-in-cpython-315.html
@pythonl
В новой версии CPython улучшили производительность декомпрессии:
- Zstandard (zstd) распаковывается на 25–30% быстрее
- zlib — на 10–15% быстрее, если размер данных больше 1 MiB
Такого ускорения добились за счёт более эффективной работы с выходными буферами во время распаковки.
Подробнее: emmatyping.dev/decompression-is-up-to-30-faster-in-cpython-315.html
@pythonl
🔥9👍4❤3
🤖 SelfDiscord: Мощный Discord Selfbot за 2 минуты настройки
SelfDiscord — это удобный selfbot для Discord с множеством команд и утилит. Он позволяет отслеживать ключевые слова, добавлять пользовательские команды и реакции, а также автоматизировать множество задач, таких как поиск изображений и управление сообщениями.
🚀Основные моменты:
- Логирование ключевых слов и уведомления о сообщениях.
- Автоматическая смена аватаров и статусов.
- Сохранение изображений и поиск источников.
- Пользовательские команды и реакции с возможностью сохранения.
- Уведомления и таймеры для задач.
📌 GitHub: https://github.com/tagal6727/SelfDiscord
#python
SelfDiscord — это удобный selfbot для Discord с множеством команд и утилит. Он позволяет отслеживать ключевые слова, добавлять пользовательские команды и реакции, а также автоматизировать множество задач, таких как поиск изображений и управление сообщениями.
🚀Основные моменты:
- Логирование ключевых слов и уведомления о сообщениях.
- Автоматическая смена аватаров и статусов.
- Сохранение изображений и поиск источников.
- Пользовательские команды и реакции с возможностью сохранения.
- Уведомления и таймеры для задач.
📌 GitHub: https://github.com/tagal6727/SelfDiscord
#python
❤9👍2🎉1
Cursor мощно прокачался — релизнулась версия 2.1, которая еще быстрее находит баги, делает ревью кода, пишет и оптимизирует программы.
• Разрабы внедрили кнопку «Find issues» — агент автоматически правит баги, делает ревью и подсвечивает проблемы в боковой панели. Да, все СРАЗУ и без нескольких промптов.
• Поиск ускорили в разы — теперь он работает на базе векторов и шерстит даже массивную кодовую базу за секунды.
• Улучшили режим планирования — агент будет задавать еще больше уточняющих вопросов, когда ты утверждаете задачу. Отвечать нужно в интерактивном режиме.
И да, сейчас на Cursor Pro есть скидка — реально приятная. Вместо 22 тысяч — 7000 рублей!
Так что если думали — это тот самый момент «пока недорого».
Купить можно на сайте👉 по ссылке
Или можно купить на авито напрямую у продавца по ссылке
• Разрабы внедрили кнопку «Find issues» — агент автоматически правит баги, делает ревью и подсвечивает проблемы в боковой панели. Да, все СРАЗУ и без нескольких промптов.
• Поиск ускорили в разы — теперь он работает на базе векторов и шерстит даже массивную кодовую базу за секунды.
• Улучшили режим планирования — агент будет задавать еще больше уточняющих вопросов, когда ты утверждаете задачу. Отвечать нужно в интерактивном режиме.
И да, сейчас на Cursor Pro есть скидка — реально приятная. Вместо 22 тысяч — 7000 рублей!
Так что если думали — это тот самый момент «пока недорого».
Купить можно на сайте
Или можно купить на авито напрямую у продавца по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤5😁5👍3😱2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Коварная ловушка с замыканиями в Python
Многие хитрые баги в Python появляются из-за того, что разработчики неверно понимают область видимости переменных в замыканиях.
Частая ошибка - внутри цикла создавать функции-лямбды, которые «помнят» одно и то же финальное значение переменной, а не значение на каждой итерации. В итоге весь список функций ведёт себя одинаково. Чтобы избежать ловушки, фиксируйте значение через аргумент по умолчанию или используйте functools.partial.
Многие хитрые баги в Python появляются из-за того, что разработчики неверно понимают область видимости переменных в замыканиях.
Частая ошибка - внутри цикла создавать функции-лямбды, которые «помнят» одно и то же финальное значение переменной, а не значение на каждой итерации. В итоге весь список функций ведёт себя одинаково. Чтобы избежать ловушки, фиксируйте значение через аргумент по умолчанию или используйте functools.partial.
funcs = []
for i in range(5):
funcs.append(lambda x=i: x) # фиксируем i как значение по умолчанию
print([f() for f in funcs]) # [0, 1, 2, 3, 4]
👍11❤8🔥4
🌀 В Python есть встроенная функция
✓ Список можно развернуть
✓ Кортежи тоже разворачиваются
Можно итерироваться по
✓ Множества не разворачиваются
Причина: множества *не имеют порядка*, а значит разворачивать нечего.
Если нужно развернуть множество — сначала сделай его списком:
@pythonl
reversed(), но работает она не со всеми структурами данных. Быстрый разбор:✓ Список можно развернуть
reversed([1, 2, 3]) возвращает итератор. list(reversed([1, 2, 3])) → [3, 2, 1]✓ Кортежи тоже разворачиваются
Можно итерироваться по
reversed((1, 2, 3))✓ Множества не разворачиваются
reversed({1, 2, 3}) → TypeError: 'set' object is not reversible Причина: множества *не имеют порядка*, а значит разворачивать нечего.
Если нужно развернуть множество — сначала сделай его списком:
list(reversed(list({1, 2, 3})))@pythonl
❤7👍4