Обновить
622.31

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга

Где учиться бэкенду

Привет! Мы на Хабр Карьере собираем сотни онлайн-курсов в IT или digital на маркетплейсе курсов и каждую неделю делаем подборки обучений для тех, кто хочет учиться какой-то специализации с нуля или для тех, кто уже в профессии, но чувствует, что хочет прокачать навыки.

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

Алгоритмы и структуры данных

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

Git

Система контроля версий. Позволяет вести историю изменений, работать с ветками, мержить и откатывать изменения в коде.

Python 

Язык общего назначения, популярен в вебе, автоматизации, ML.

FastAPI

Лёгкий и быстрый фреймворк для создания REST API с поддержкой async/await и автогенерацией схем.

Django

Фреймворк для быстрой разработки web-приложений, включает ORM, авторизацию и админку из коробки.

JavaScript / TypeScript

JavaScript — язык для веб-интерфейсов и серверной логики (через Node.js). TypeScript — его надстройка с типизацией, упрощающая масштабируемую разработку.

Java / Spring

Java — строго типизированный язык. Spring — основной фреймворк для создания REST API, микросервисов и корпоративных приложений.

Go

Компилируемый язык от Google с простым синтаксисом и встроенной поддержкой параллелизма. Используется в highload-системах, DevOps и backend-разработке.

C#

Язык от Microsoft, используется с платформой .NET. Применяется в разработке desktop-, web-, enterprise- и игровых приложений.

PHP

Скриптовый язык, ориентированный на веб. Часто используется с CMS (например, WordPress) и фреймворками (Laravel, Symfony).

Ruby

Язык с лаконичным синтаксисом. Наиболее известен благодаря фреймворку Ruby on Rails, ориентированному на быструю разработку веб-приложений.

SQL / PostgreSQL

SQL — язык запросов к реляционным БД. PostgreSQL — популярная СУБД, используется в веб-приложениях, аналитике, поддерживает расширения и транзакции.

Docker

Инструмент для упаковки приложений в контейнеры. Обеспечивает воспроизводимую среду разработки и удобное развертывание.

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

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

Смотреть курсы по всем специализациям

Теги:
Всего голосов 6: ↑4 и ↓2+6
Комментарии0

Когда тебя спрашивают про Питон, а ты только “Летающий цирк“ смотрел.

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

Сказал что понимает, что я пишу на 1С, но может ли он ко мне обращаться с вопросами. Хороший повод посмотреть что это за язык. Нужно какое-то ТЗ.

Пусть в SQL есть таблица «Prices» с двумя колонками. «Product», «Price». Требуется посчитать и вывести среднюю стоимость.

Средняя стоимость = Сумма/количество различных позиций.

Задача стоит. На чём её решать?

Есть компьютер с Windows 11.

В качестве движка БД думаю поставить SQLite. Так же нужно установить Python.

IDE наверное будет перебором, поэтому поставлю Sublime Text с каким-нибудь плагином. Так-с. Что я знаю о Python. Он полный по Тьюрингу. Блоки определяются отступами. Есть объекты…. Вроде всё.

Приступим. Что нам понадобится:

1. Установленная SQLite.

2. Созданная БД с нужными данными.

3. Объект «Подключение» в Python.

Так-с SQLite. На https://www.sqlite.org/download.html есть собранный для Windows. В принципе логично, но всё равно приятно… Ага, вот и первый нюанс. Есть DLL и есть tools.

Похоже придётся чутка почитать... Пишут ставить Tools “sqlite-tools-win-x64” (Если кто-не слушал, то настойчиво рекомендую послушать Tool – Vicarious).

Скачиваем — распаковываем, видим 4 exe файла.

Нам нужно:

1. Создать БД.

2. Создать таблицу.

3. Заполнить таблицу.

4. Написать запрос для получения данных таблицы.

4. Написать запрос для получения среднего.

Открываем документацию к SQLite. Приступим.

1. Создаём БД: C:\sqlite> .\sqlite3.exe average.sqlite;

2. Создаём таблицу с колонками нужных типов: create table prices(product text, price int);

3. Проверяем что таблица создалась: sqlite> .tables;

4. Заполняем строки:

insert into prices values('Bike',1);
insert into prices values('Car',2);
insert into prices values('Boat',3);

5. Проверяем заполнение: select * from prices;

6. Пишем запрос средней цены: SELECT AVG(price) AS average_price FROM prices;

Получили 2.

Отлично! С этим разобрались.

Теперь нужно:

1. Установить python.

2. Разобраться объект какого класса следует использовать для подключения к SQLite.

3. Получить результат запроса.

4. Вывести результат запроса.

Смотрим.

1. Скачиваем learn_python.winget.

2. winget configure -f C:\Users\Имя пользователя\Downloads\learn_python.winget.

3. Пишем код в текстовом редакторе:

#https://docs.python.org/3/library/sqlite3.html

import sqlite3

conn = sqlite3.connect('C:\\sqlite\\average.sqlite')

cursor = conn.cursor()

cursor.execute('SELECT AVG(price) AS average_price FROM prices;')

result = cursor.fetchone()

if result and result[0] is not None:

print(f"Average Price is {result[0]:.2f}")

else:

print("No prices found.")

conn.close()

4. Сохраняем как print_average_price.py.

5. Запускаем: python3.13.exe .\print_average_price.py.

«Average Price is 2.00».

Отлично! Задача выполнена.

Теги:
Всего голосов 8: ↑0 и ↓8-8
Комментарии8

API Автотесты

Ситуация: два подхода к валидации API-ответов — я использую Pydantic, считая его удобным, многофункциональным, проще поддерживаемым и современным. Мой коллега предпочитает jsonschema, не видя причин для смены, считая что он может всё тоже самое. Противостояние на совместном проекте привело к разделению зон покрытия: я взял eshop, он — pim. Я неистово топлю за Pydantic но не могу убедить коллегу...

Не тратя время на исследования, ИИ выдал базу:

  1. Удобство и поддержка — pydantic упрощает модели через аннотации, делая обновления быстрыми. jsonschema требует ручных генераций схем, что трудоемко.

  2. Производительность — pydantic в 10 раз быстрее на больших данных благодаря Rust. jsonschema медленнее при вложенных структурах.

  3. Гибкость — pydantic предлагает кастомные валидаторы и интеграцию с OpenAPI. jsonschema универсален для кросс-платформ, но кастомизация сложнее.

  4. Интеграция с тестами — pydantic легко работает с PyTest и Allure. jsonschema требует настройки.

  5. Обучение — pydantic имеет сильное сообщество (360 млн скачиваний) и документацию. jsonschema требует знания JSON-стандарта.

Вывод: Pydantic выигрывает в большинстве ситуаций, если не сказать что во всех.

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

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

А может я не прав?

Приглашаю к обсуждению:

  1. Какой инструмент вы предпочитаете для валидации API в автотестах и почему?

  2. Бывали ли случаи, когда смешивание Pydantic и jsonschema вызвало проблемы? Или наоборот, помогало?

  3. Стоит ли разделять подходы в одном проекте, как это сделали мы?

Возможно я не так понял формат постов, т.к. ожидал тут увидеть возможность голосования как в статьях. Принять и простить)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии1

Представлен обучающий курс по Python под названием Advanced Python Mastery от Дэвида Бизли, автора нескольких книг-бестселлеров по этому языку программирования и одного из главных знатоков Python. В базе курса представлены данные по работе на уровне процессора и компилятора до продвинутых концепций программирования на Python и самых актуальных фреймворков, а также десятки материалов с PyCon.

Теги:
Рейтинг0
Комментарии0

После 9 месяцев постоянного вайбкодинга могу сказать что это буллщит.

Ты хреново излагаешь мысли, так как не понимаешь нюансов - получаешь херовый сервис. Нет, код прекрасный, он логичен и эффективен. Просто ты сам виноват, ибо ты не умеешь не вносить каждым наивным проптом вида "fix it, accelerate endpoint" все больше интерференции и в конечном итоге все больше энтропии. Банально сервис дублирует твой неструктурированный и противоречивый поток мыслей и превращает его в странный конструкт.

Это ладно я еще +- айтишник, могу сказать что хей, тут ты зря кешируешь результат, избыточно, а тут вообще можно просто из бд вытянуть и не сверять каждый раз с ответом API. Что творится у людей без представления о комьютер саенс представить страшно представить.

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

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

P.S. Пост от балды от очередного условного вайбкодера ради интереса прикладной автоматизации на работе.

Теги:
Всего голосов 12: ↑9 и ↓3+8
Комментарии15

Ко мне в телеграм канал заглянул один из разработчиков Графини (убийцы Grafana), с пояснением, зачем они её родили, и что писали полностью с нуля.

Я верю.

Теги:
Всего голосов 12: ↑4 и ↓8-4
Комментарии2

Находки на рыбалке: FastStream! Сходили с автором половить рыбу и пожарить всякое вкусное на углях. И пока было время – говорили про программирование.

Для тех, кто еще не успел познакомиться с новинкой, рассказываю: FastStream – аналог FastAPI, но для работы с событиями в брокерах / очередях.

Пример:

from faststream import FastStream
from faststream.kafka import KafkaBroker

broker = KafkaBroker("localhost:9092")
app = FastStream(broker)

@publisher("another-topic")
@subscriber("first-topic")
async def handle(user: str) -> str:
     return f"Hi, {user}!"

Что делает данный код? Читает сообщения из first-topic, парсит из них поле user типа str, выполняет вашу логику обработки, отправляет новое сообщение в another-topic. Просто? Удобно? Да!

Что нам дает такой подход?

  • Декларативное описание, чего мы хотим. Не надо руками создавать коннекты и рулить потоком выполнения

  • AsyncAPI документацию (аналог OpenAPI в вебе)

  • Удобное тестирование

  • Кучу других плюшек!

Внутри видео обсудили:

  • Детали работы DI фастстрима

  • Встроенное Observability

  • Open Tracing

  • Сообщество фреймворка (тут не будет проблемы "одного автора", сообщество живет!)

  • Отличия от Celery: почему интструменты совсем разные?

Репозиторий: https://github.com/ag2ai/faststream
Документация: https://faststream.ag2.ai

Обсуждение: используется ли в ваших проектах асинхронная архитектура? Как вы работаете с событиями?

Теги:
Всего голосов 11: ↑11 и ↓0+13
Комментарии0

В PEP 798 предлагается расширить возможности коллекций (списки, словари, множества) и генераторов, разрешив операции распаковки (* и **) внутри выражения.

Способ позволит лаконично в одну строку объединять произвольное количество итерируемых объектов в одну коллекцию:

[*it for it in its]  # список с объединением итерируемых элементов в 'its'
{*it for it in its}  # множество с объединением итерируемых элементов в 'its'
{**d for d in dicts} # словарь с комбинацией словарей в 'dicts'
(*it for it in its)  # генератор с объединением итерируемых элементов в 'its'

В данный момент объединение списков мы осуществляем с помощью циклов:

# с помощью генератора
its = [[1, 2], [3, 4], [5]]
new_list = [x for it in its for x in it]

# с помощью метода extend
new_list = []
for it in its:
    new_list.extend(it)

# для множеств и словарей с помощью метода update
new_set = set()
for it in its:
    new_set.update(it)

new_dict = {}
for d in dicts:
    new_dict.update(d)

# также возможно использовать генераторную функцию (yield)
def new_generator():
  for it in its:
      yield from it

Предложение распространяется также на асинхронные выражения.

В данный момент предложение находится на стадии черновика.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

Как создать мультиаккаунт-ферму для любых целей: от TikTok до Amazon

Мультиаккаунтинг — основа множества задач: от продвижения в соцсетях и тестирования антифрод-систем до арбитража трафика, отзывов, заказов и автоматизации серых схем. Эта статья — техническое руководство по созданию собственной мультиаккаунт-фермы.

1. Зачем нужна мультиаккаунт-ферма

Массовое создание и управление аккаунтами востребовано в:

  • TikTok / Instagram / YouTube (SMM, продвижение, фарм, масслайкинг)

  • Amazon / eBay / Etsy (отзывы, возвраты, seller support)

  • Tinder / Badoo / Facebook (фарм профилей, трафик, лидогенерация)

  • Финансовые сервисы (регистрация, чекапы, симуляция пользовательской активности)

2. Инфраструктура: из чего состоит ферма

Управляющий скрипт / панель

  • Язык: Python + SQLite / Redis

  • Задачи: управление профилями, логами, заданиями

Эмуляторы / браузеры

  • Android: MEmu, LDPlayer, Anbox (Linux)

  • Браузерные: Puppeteer, Playwright, Selenium, антидетект-браузеры (Dolphin{anty}, AdsPower, Incogniton)

Прокси-серверы

  • Mobile / Residential — лучшее для trust-оценки

  • Автоматическая ротация, логика GEO под задачу

Серверная часть

  • VPS / VDS с Linux или Windows

  • Docker-контейнеры под каждое окружение

  • Балансировка нагрузки

3. Создание аккаунтов: подходы

Ручной полуавтомат (через Android-эмулятор)

  • Эмуляция касаний (ADB, Auto.js)

  • Работа через антидетект-образы

Полностью автоматический (браузер + API)

  • Использование Playwright + обфускация fingerprint

  • Капча-решатели: 2Captcha, CapMonster, hCaptcha API

4. Управление и автоматизация

  • Отслеживание статуса аккаунта: валидация, блок, SMS

  • Система задания задач (task scheduler)

  • Импорт/экспорт сессий и cookies

  • Telegram-бот для уведомлений

5. Масштабирование

  • Запуск десятков сессий в docker-контейнерах

  • Использование headless-режима с обходом защиты

  • Съём логов и дебаг-интерфейсы

6. Безопасность и устойчивость

  • Разделение трафика по подпроектам

  • Автоматическое обновление fingerprint’ов

  • Логирование и автоотключение забаненных узлов

  • Мониторинг прокси и доступов

Пример архитектуры

[ Telegram Bot ] <- уведомления / команды
       |
[ Flask API ] <-> [ SQLite / Redis ]
       |
[ Управляющий скрипт ] -> [ Docker / Android VM ]
                                |
                         [ Браузер / Эмулятор ]
                                |
                            [ Прокси-сервер ]
Теги:
Всего голосов 10: ↑4 и ↓60
Комментарии0

Есть для альтернатива Delphi в 2025 году для простых кроссплатформенных приложений?

Навеяно обсуждением статьи про Дельфи в 2025.

Q1: Если сейчас есть задача по-быстрому сбацать что то с формами под винду - какая есть альтернатива дельфи?

Q2: А если так же быстро накидать, только кроссплатформенное приложение и без зависимостей?

И мой ответ

A: Не находишь, что 3000$ за кроссплатформенный дизайнер форм слишком дорого? Даже за хороший.

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

Все может использоваться бесплатно и без особых претензий на функциональность. Единственное, иногда бывает нужно еще нарисовать какой то чарт/график и загрузить/записать данные в БД/XML/JSON - с этим могут быть нюансы с конкретным вариантом.

С чем то я работал, с чем то нет, актуальные версии вживую не проверял.

  1. GNOME Builder (ex.Anjuta). GTK multilang IDE

  2. Cambalache (ex.Glade) - GTK form builder

  3. Qt Creator

  4. FLUID for FLTK

  5. wxFormBuilder for wxWidgets 

  6. Projucer for JUCE

  7. Ultimate++ 

  8. NetBeans GUI design tool for Java Swing 

  9. TKproE (TCL/TK Programming Environment)

  10. Lazarus

  11. MSEide+MSEgui Pascal

  12. GTK# Visual Designer MonoDevelop (retired)

  13. Xamarin.Forms GTK Backend (discontinued for NET MAUI)

  14. JavaFX Scene Builder

  15. Pygubu Tkinter a GUI for Python

    Может еще что и забыл, либо не попалось на глаза.

Теги:
Всего голосов 8: ↑4 и ↓40
Комментарии15

Для чего инженеру комьюнити, конференции и митапы?

Гость нового выпуска «AviTalk»Евгений Афонасьев, тимлид разработки Antifraud. Женя рассказывает про истоки инженерной карьеры, первые вызовы и рост до позиции тимлида. Вместе с ведущей Стасей Кошман разбираемся:

  • как отличаются процессы найма в Авито для разработчиков и менеджеров? 

  • что такое Antifraud и каковы его задачи?

  • как организована жизнь комьюнити и почему полезно ими заниматься?

  • что дают конференции и как попасть в программный комитет?

Смотреть VK
Смотреть YouTube

Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.

Теги:
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Обновлён бесплатный обучающий Python репозиторий «Think Python, 3rd edition» на GitHub, где есть вся база от основ синтаксиса до продвинутых концепций ООП. Материалы четко структурированы, множество примеров кода. Все оформлено в Jupyter‑notebook — материал легко читается, а по содержанию легко найти нужный раздел.

Теги:
Всего голосов 4: ↑4 и ↓0+8
Комментарии0

Automate Your Daily Tasks in 10 Minutes: A Practical Guide to n8n for Beginners

Until 2022, I thought automation was only large companies. But in 2022 I discovered n8n, and everything changed. Now, I automate routine work, reports, and even whole business processes—sometimes in under 10 minutes. Here’s how it works, what surprised me, and what you can try today.

In 2022, I deployed n8n on a separate VPS to demonstrate the ability to process design data from Revit and show that it's like working in Dynamo or Grasshopper, but for data managers and automation pipelines outside of Autodesk products.

But it was hard to get experts interested in 2022 - at the time, n8n was still in its early stages: there were no Python nodes, no LLM integration, and most workflows took weeks to create, relying on scattered blog posts and incomplete examples on forums.

Fast forward to 2025, and everything has changed.

Today, thanks to native LLM nodes, you can simply ask ChatGPT, Claude, or any advanced AI assistant to generate automation n8n pipelines — whether for validating parameters or producing custom QTO tables — and get ready-to-run workflows in seconds.

Why Bother with Automation?

Let’s be honest: most “office work” is repetitive. Copy-paste, renaming files, sending the same email—again and again. It’s boring and, more importantly, wastes hours every week. For me, automation started as an experiment, but quickly became a must-have. Once you automate your first task, you won’t want to go back.

What is n8n and Why Use It?

n8n (pronounced “n-eight-n”) is a free, open-source tool for automating anything—emails, file operations, notifications, even AI tasks. The best part? No coding needed. You just drag, drop, connect blocks, and press play. It runs on Windows, Mac, or Linux. I set up my first workflow in under 15 minutes.

How I Got Started (And You Can Too)

  1. Install Node.js (from the official site, takes 2 minutes)

  2. Install n8n with one command

  3. Open n8n in your browser (local or online)

  4. Start building: drag blocks (“nodes”) to connect apps, add logic, or even call ChatGPT to write emails for you!

Video Tutorial:
Automate Your CAD-BIM Workflows Local with n8n + ChatGPT & Claude | No Code, No Plugins, No Internet

My first workflow? Automating project reports — collecting data, formatting it, and sending it as an email, all triggered by a single button.

Video Tutorial:
Automate Your CAD-BIM Workflows Local with n8n + ChatGPT & Claude | No Code, No Plugins, No Internet

Where the Magic Happens: AI & Templates

The next “wow moment” for me was connecting n8n to AI tools like Claude and ChatGPT. Need to generate text, analyze data, summarize, or respond to messages? Just add a ChatGPT node—no API coding, just your prompt.

Short on time? n8n has a big library of ready-made templates. You can find workflows for almost any need: document processing, cloud backups, database syncs, even advanced stuff like BIM/CAD data processing. Grab a template, tweak it for your needs, done.

Lessons Learned and Tips

  • Don’t overthink: Start simple. Even automating one small task (like downloading attachments from email) pays off.

  • Debug as you go: n8n makes it easy to see where something breaks—just follow the logs, tweak, and re-run.

  • Experiment: The community is active and shares real-life examples. Some of my best workflows came from GitHub repos or the official n8n library.

  • Combine tools: I use n8n with spreadsheets, databases, cloud storage, and AI. Everything connects!

Why You Should Try It

After a few weeks, I realized how much time I was saving. Reports that took 30 minutes now take 2. Integrations that seemed impossible (like sending BIM data to a spreadsheet, then to Teams) were suddenly simple.

Automation isn’t just for techies anymore. With tools like n8n, anyone can build and run real workflows—saving hours, reducing errors, and focusing on what really matters.

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии3

Ближайшие события

Хорошо ли вы разбираетесь в Python?

В Академии Selectel есть небольшой тест на владение синтаксисом Python. Он позволит оценить свои знания и отыскать пробелы. Вопросы подобраны для тех, кто уже не пугается None, но продолжает разбираться, что происходит «под капотом». Бонусом — подборка полезных материалов для изучения Python!

Пройти тест →

Теги:
Всего голосов 8: ↑5 и ↓3+2
Комментарии0

Бесплатные курсы Route 256 от Ozon Tech для QA-инженеров

Route 256 — это 2 месяца онлайн-вебинаров и воркшопов от команды экспертов Ozon Tech. Программа состоит преимущественно из практики на базе реальных задач бигтеха, что помогает студентам получить уверенный опыт в автотестировании на Python.

Этим летом Route 256 открывает набор в направлении QA Automation на Python для middle- и junior-специалистов. Занятия проходят вечером, поэтому курсы удобно сочетать и с учёбой, и с работой.

3 августа состоится отборочный контест для поступления на курс. Он будет включать алгоритмические задачи и тест. Ученики middle-направления по окончании курса могут получить оффер в команду, а junior-участники — приглашение на оплачиваемую стажировку.

Если вы хотите получить знания команды разработки ведущего e-com России, заявку стоит подать уже сейчас.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Заметки с ИИ-котом v. 1.05, для Windows

Скачать. Бесплатно, установка не требуется.
Кому нужно видеть код приложения - смотрите.
Может ругаться Виндовс антивирус, потому что программа без лицензии. Если кто может с ней помочь - прошу написать.
Ни на что не претендую, если больше нравится Обсидиан - рад за вас, но не искренне.

Новое в "Заметках с котом":

- все ИИ-функции по отдельным заметкам теперь открываются при нажатии по коробке.

- добавлены функции для пакетной обработки содержимого папок (волшебная палочка при наведении на папку)

- теперь можно быстро открывать и большие файлы.

- можно менять цвета папок в Избранном. Рекомендую добавить в Избранное хотя бы одну папку.


Исправлены ошибки:

  • неправильное распознавание кодировки. Оставил только utf-8 и windows-1251 - повысил точность их распознавания.

  • сбой пути при сохранении новой заметки

  • изредка ии-функции выдают ошибки, теперь их видно (раньше были скрыты)

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Собираем питонистов на митапе ЮMoney!

3 июля, в четверг, в 19:00 (мск) — приходите на митап про Python в Санкт-Петербурге или подключайтесь онлайн.

О чём будут доклады?

🟣 Это не те метрики, что вы ищете. Разберёмся, почему стандартного экспортёра может не хватать, и как написать свой на Python.
🟣 Кодогенерация: как компьютеры учатся писать код за нас. Поговорим про прошлое, настоящее и будущее кодогенерации в разных языках программирования.
🟣 Ruff: как не положить всё, переходя на новые правила? Поговорим про линтеры, форматтеры и подводные камни при переходе на Ruff.
🟣 Секреты успеха змеи в мире пауков. Обсудим, как мы применяли scrapy и playwright в ЮMoney, чтобы создать сервис модерации сайтов.

Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа.🔥

Теги:
Рейтинг0
Комментарии0

Нечеткое ассамблирование нейросетей для классификации на Python

Для ансамблирования нейросетей обычно используют простые методы, например, в задаче классификации, выбирают класс, за который проголосовало большинство моделей. Но что если рассматривать моделей, как экспертов, для которых мы можем оценить уровень точности? В этом посте я расскажу о своем подходе Fuzzy Vote, который использует нечеткую логику для объединения предсказаний моделей. Метод написан с помощью библиотеки fuzzyops, доступной через pypi. В библиотеке реализованы различные методы работы с нечеткими числами, поддерживаются вычисления на CUDA.

Идея метода

Каждая модель рассматривается как эксперт, который предсказывает вероятность принадлежности к классу и имеет определенную степень доверия. Эту информацию можно отразить через нечеткое число, в котором центр - это вероятность, ширина - неопределенность и высота - степень доверия.

Далее каждая модель "голосует" нечетким числом, числа агрегируются, и полученное число дефаззифицируется в одно значение. Полученное четкое число используется для классификации.

Генерация треугольного и гауссового нечеткого числа:

from fuzzyops.fuzzy_numbers import Domain, FuzzyNumber

def build_triangular(domain, centre, width, height):
    a, b, c = centre - width/2, centre, centre + width/2
    fn = domain.create_number("triangular", a, b, c)
    return fn * height

def build_gauss(domain, centre, sigma, height):
    fn = domain.create_number("gauss", sigma, centre)
    return fn * height

Агрегация одного примера:

def aggregate_sample(probs, accs, mf_type="gauss", scale_w=1.0, gamma=1.0, defuzz="cgrav"):
    domain = Domain((0.0, 1.0, 0.005), method="minimax")
    fnums = []

    for p, acc in zip(probs, accs):
        height = acc ** gamma
        width = max(0.02, (1.0 - acc) * scale_w)
        if mf_type == "tri":
            fnums.append(build_triangular(domain, p, width, height))
        else:
            sigma = width / 3.0
            fnums.append(build_gauss(domain, p, sigma, height))

    agg = sum(fnums[1:], start=fnums[0])
    return float(agg.defuzz(defuzz))

Агрегация всей выборки и оценка:

import numpy as np
from sklearn.metrics import roc_auc_score

def evaluate_fuzzy(probs_mat, y_true, acc_vec, **kwargs):
    scores = np.array([
        aggregate_sample(row, acc_vec, **kwargs)
        for row in probs_mat
    ])
    scores = (scores - scores.min()) / (scores.max() - scores.min() + 1e-12)
    return roc_auc_score(y_true, scores)

Как это сработало в задаче классификации пневмонии

Я обучил три модели (VGG19, ResNet50, DenseNet121) на датасете Chest X-Ray Pneumonia, взяв предобученные веса и переобучив классификатор на одну эпоху.

Результаты на валидационном и тестовом сете
Результаты на валидационном и тестовом сете

Метод Fuzzy-Vote дал лучшую точность, чем любая отдельная модель или простой majority vote метод. По ROC-AUC он не обошёл VGG19, но обошёл остальные методы, включая дискретный ансамбль. При этом метод не требует сложных архитектур или переобучения: он просто работает поверх уже полученных вероятностей.

Fuzzy-Vote — это простой, но гибкий способ агрегации предсказаний с учетом точности и уверенности каждой модели. Особенно полезен в случаях, когда:

  • модели сильно различаются по качеству

  • обычный majority vote даёт просадку

  • хочется объединить разные модели без дополнительного обучения

Но метод еще требует доработки, он не учитывает, например, confusion matrix каждой модели, чтобы учесть ошибки разного рода. Библиотека fuzzyops позволяет реализовать метод с минимумом кода и достаточно гибкой настройкой.

С полным кодом тренировки моделей и агрегирования можно ознакомиться по ссылке.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Заметки с ИИ-котом v. 1.04, для Windows

Скачать. Бесплатно, и установка не требуется.
Подробности о приложении написаны в прошлой новости.
Кому нужно видеть код приложения - обновил и его.
Ни на что не претендую, если больше нравится Обсидиан - никто вас не трогает.

Теперь можно менять стили редактора.
Теперь можно менять стили редактора.

Исправлено несколько ошибок.
Появилась возможность быстро создать большую структуру папок. Третья иконка слева сверху.
Улучшены ИИ-функции. Да, есть и другие ИИ-функции, помимо вызова кота при клике на коробку. Открываются нажатием на волшебную палочку после нажатия по файлу.
Теперь Заметки нормально работают с большим количеством файлов и автоматически удаляют из избранного файлы, которые были удалены или перемещены.
Доработан интерфейс.
Спасибо всем, кто ответил в комменты и на почту.

Понемногу исправляю карму...

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Заметки с ИИ-котом v. 1.0, для Windows

⁠⁠Скачать. (ссылка обновлена) Бесплатно, и установка не требуется.

Разрабатываю по фану — потому что мне самому не хватало чего-то простого, лёгкого и по делу.

Это приложение для личных заметок не претендует на звание "универсальной системы управления знаниями", не строит из себя ракетный двигатель и СОВСЕМ не пытается быть новым Обсидианом. Это просто удобное место, куда можно быстро спрятать мысль, идею или список покупок.

Что умеет:

  • Работает только с текстом: .txt, .md, .markdown, .mdown

  • Создаёт новые заметки в формате Markdown (но без наворотов — как в старые добрые)

  • Не держит тебя в облаке, не шифрует данные в своём формате — всё лежит на диске, как тебе привычно

  • Левое окно показывает структуру папок — полупрозрачные папки = пустые (нет файлов или подпапок)

  • Двойной клик по папке — запоминается как начальная при следующем запуске

  • Одинарный клик — раскрывает содержимое

  • Если в буфере есть текст — он автоматически попадёт в новую заметку. Буфер очищается.

  • Поиск: по тексту, по названиям файлов, по содержимому. С историей. А еще есть Избранное.

  • Настройки? Пока только для нейросетевых функций и ответов ИИ-кота (его можно позвать, кликнув по коробке), который может что-то подсказать или прокомментировать с долей сарказма.

Про искусственный интеллект:

  • Поддерживает OpenRouter — регистрируешься, получаешь 50 бесплатных запросов в день

  • Хватает за глаза для личных заметок, резюме текстов, генерации идей или перевода мыслей во что-то собранное

  • ИИ-кот ведёт себя не особо прилично.

В чем отличие от Обсидиана:

Обсидиан — это космический шаттл для заметок. А мы тут катаемся на велосипеде — быстро, удобно и без инструкции.

Просто. Не нужно ничего устанавливать — скачал, запустил, пишешь.

Лёгкий. Всё приложение весит 17 Мб.

Минимум функций. Не запутаешься. Никаких плагинов, графов, связей и внутренних ссылок.

Стиль свой. Не такой серьёзный, как Обсидиан.

Бесплатный ИИ здесь не только для управления, а еще для подколов и помощи.

Короче:
Если устал от систем, которые требуют обучения, миграции каждые полгода... и выглядят как база данных космического корабля — это приложение для тебя.
Просто открываем, пишем, сохраняем. ИИ критикует и помогает, если нужно, но не навязывается.

Горячие клавиши:
Ctrl + N - создать заметку
Ctrl + P - создать папку
Ctrl + F - искать текст в открытом файле
Ctrl + S - сохранить файл
Ctrl + колёсико - изменение размера шрифта

Win + точка - вставка эмодзи

Теги:
Всего голосов 9: ↑9 и ↓0+9
Комментарии9

Вклад авторов