Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Новый хит для любителей игры жанра три в ряд! Кот Ученый уже прячет предметы по таинственному лесу, чтобы вы получили удовольствие от поиска вещей и заработали как можно больше изумрудов. Котик рад новым гостям!

Северное слияние - тайна леса

Казуальные, Приключения, Логическая

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
11
ChtoToTamNik
ChtoToTamNik
ИТ-проекты пикабушников

Разработка своей программы, суровые реальности и как такое продавать?⁠⁠

7 дней назад

Начнем пожалуй с предыстории.

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

- Нам нужно создать модель которая посчитает нам условия закрытия одного из объектов и как это может повлиять на инфраструктуру, сроки вчера. Чем быстрее тем лучше.

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

В тот же момент я задумался "А есть ли вообще аналогичная программа, что бы не сидеть и не считать все в табличках, не писать большие запросы в БД?" - ответ был "Есть, но дорого и компания не пойдет на такие затраты".

Спустя время мы конечно закрыли проект со всеми расчетами, применили изменения. Но только вдумайтесь, целый департамент на протяжении пары месяцев считает рентабельность изменения целой инфраструктуры и влияние на него всего лишь закрытием 1-2 объектами. Это колоссальные затраты для компании.

Со временем я перешел в IT, сменил свою сферу деятельности, в свободное время изучал различные языки программирования, фреймворки и понял "А что если разработать аналог для логистической инфраструктуры. Да, конечно дизайн будет не броский, но нам важна лишь функциональность и работоспособность данной программы". Соответственно в начале 25г мною было принято решение начать разработку. Как раз время AI инструментов, не идеальные, но какие-то нюансы они могут подтянуть что бы не лезть в тех доку на изучение той или иной функции/метода/условия.


Язык: Python.

Библиотеки для интерфейса: PyQt6.

Хранилище всей информации: SQLite3.

Частично использовалось: HTML, JS.

И множество второстепенных библиотек для кодирования информации, реализации возможности подключения внешних БД, работы с таблицами и т.п.


Python — язык не самый лучший, да и PyQt библиотека своеобразная и довольно хорошо нагружает систему, сама программа начинает весить тоже немало. Но ведь мы не гонимся за «вау-эффектом».

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

«Оптимизации доставок», «1С:Транспорт», «SAP», «Транспортный анализ» и т.п. Но ни одной подходящей под мое описание программы не было.

Что включало в себя мое виденье всей системы:

  1. Интерактивная карта с маркерами объектов.

  2. Автоматический расчет зонирования регионов в зависимости от исторических данных продаж с доставками.

  3. Отображение линий снабжения объекта прям на карте в формате «Объект А -> Объект Б -> Объект С».

  4. Планирование маршрута при выборе определенных объектов.

  5. Возможность построение интерактивных дашбордов.

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

  7. Внутренний аналитический куб.

  8. Подключение к внешним БД как к источнику данных и тонкая настройка самим пользователем с маппингом полей.

  9. Создание регионов по складам (ручное выделение самого региона на карте).

И прочие функции, по типу DAX-языка при создании вычислительных полей.

Вишенка на торте всей программы:

10. Анализ инфраструктуры автоматически на ядре программы в формате «Что если?».

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

Первое, что я начал делать — накидывать БД, да, мы не имеем сервера, поэтому нам надо хранить данные для работы программы локально. Почему не сделать под клиента? Ну-у-у... Возможно, потому что у всех своя структура хранения, а аналитики есть везде, написать SQL-запрос и выгрузить данные по шаблону куда проще, чем делать программу с адаптивом. Имея опыт в работе с логистикой и инфраструктурой, я понимал, какая +- система хранения у всех компаний, труда собрать хранение мне не составило.

Вторым моим шагом стало изолирование всех действий с БД в программе. Т.е. все методы программы не должны общаться на прямую с хранением, а ходить через выделенный файл (ресурс).

Третий шаг — создание интерфейса, вкладок, виджетов и т.д. Можно было сделать через WebView, писать отдельно файлы форм, настраивать JS-логику, передавать сигналы в .py-файлы и т.д. Но это слишком усложняет весь проект, расширяя его код. В таком случае один я уже не смог бы вывести. Поэтому выбрал PyQt6. Долго анализировал, как лучше сделать, но ничего умнее не придумал. Так и родился первый интерфейс программы:

Один из вариантов левого меню.

Один из вариантов левого меню.

Возможность группировать объекты в рамках ближних зон и разгруппировать при приближении.

Возможность группировать объекты в рамках ближних зон и разгруппировать при приближении.

Система отображения линий снабжения.

Система отображения линий снабжения.

Возможность выбрать среди нескольких типов карт.

Возможность выбрать среди нескольких типов карт.

Построение тепловой карты по зонированию доставки с учетом исторических данных. К сожалению, данные были сгенерированы через бота, поэтому есть проблемы в формате историчности.

Построение тепловой карты по зонированию доставки с учетом исторических данных. К сожалению, данные были сгенерированы через бота, поэтому есть проблемы в формате историчности.

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

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

Возможность построить свои дашборды. Перемещать, настраивать и т.д. 

Возможность построить свои дашборды. Перемещать, настраивать и т.д. 

Подключить внешнюю БД (на примере sqlite как заглушка).

Подключить внешнюю БД (на примере sqlite как заглушка).

Анализ «Что если?». В анализе пока что реализована лишь один тип «Закрытие объекта», в будущем планируется добавить еще множество конструкторов и методов.

Анализ «Что если?». В анализе пока что реализована лишь один тип «Закрытие объекта», в будущем планируется добавить еще множество конструкторов и методов.

Пример работы анализа. Данные не фактические, лишь заглушки для проверки работы.

Пример работы анализа. Данные не фактические, лишь заглушки для проверки работы.

Также есть toolbar с интерактивностью. Наводя на кнопки, они расширяются в бок, показывая текст кнопки.

Также есть toolbar с интерактивностью. Наводя на кнопки, они расширяются в бок, показывая текст кнопки.

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

Четвертый шаг — создание ядра всего мыслительного процесса, пользователь нажал на кнопку, а что дальше? Дальше как раз таки отдельные компоненты, которые получают запрос и идут по логике дальше, забирают/обновляют/удаляют данные через шаг 2, интерпретируют их и отдают ответы на модули, которые вызывали.

Да, конечно, с ядром программы я возился довольно долго. Ввиду того что это не 1С, а свой, по сути, уникальный продукт, мне на 80% удалось создать полный конструктор ядра. Что это значит? Значит то, что всю дальнейшую логику мне надо лишь описывать в исполняемых файлах core. Это дало прирост к написанию более качественного кода, более чистого. Да, репозиторий программы увеличился с 15 mvp файлов до 80. Отдельный исполняемый файл практически на каждую форму и отдельно логический файл. Зато мы сразу имеем максимально декомпозированную структуру, которую легко править и изменять процессы.

Далее было много различных шагов, криптография подключения к БД, логирование действий для отслеживания ошибок программы, перевод карты на формат HTML+JS. Получение API ключей и т.д.


В последний момент я задался вопросом: «Как распространять обновления программы? Ведь если я внесу новые правки — пользователь должен их получить. Также я должен делать логирование для использования программы».

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

Окно авторизации.

Окно авторизации.

Провал авторизации.

Провал авторизации.

Окно после успешной авторизации с новостной панелью.

Окно после успешной авторизации с новостной панелью.

Интерфейс для лаунчера я накидал быстро с помощью нейронки, вручную написал код для авторизации на js с py. Настроил всё и протестировал. И «О чудо!» не имея большого бюджета у меня получилось реализовать это всё, над безопасностью авторизации еще, безусловно, стоит потрудиться.

Через некоторое время написал тест кейсы, написал алгоритм для тестирования всех модулей, поправил баги, которые вызывали сбои. Сейчас готова версия 0.5.8. До релиза v1.0.0 еще далеко, много разделов, которые моя голова хочет реализовать.

Что делать дальше? Когда я только начинал, был уверен, что проект можно продать. Я видел такие кейсы и раньше. Думал, что смогу развивать его сам, возможно, еще на год разработки в свободное время меня хватит, и я не погрязну во всей архитектуре. Но год спустя сомнения все чаще берут верх. Может, я зря трачу время?

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


Если у вас есть идея и желание реализовать её самостоятельно, смело действуйте.

В скором времени постараюсь выложить еще пост о новых функциях программы.

Делитесь своими комментариями и мнениями.

Показать полностью 14
[моё] IT Логистика Карты Анализ данных Длиннопост
3
YesAi
YesAi

Анализ расходов с помощью нейросетей: пошаговое руководство для финансовой грамотности⁠⁠

19 дней назад

Зарплата только поступила, а спустя несколько дней в кошельке снова пусто? Многие теряют часть дохода, даже не осознавая этого. По данным исследований, примерно 10% средств уходит неизвестно куда. Но стоит лишь освоить автоматизацию финансового учета и научиться замечать каждую трату — и можно вернуть контроль над бюджетом.

Анализ расходов с помощью нейросетей: пошаговое руководство для финансовой грамотности

Как нейросети помогают следить за расходами

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

Почему стандартные методы неэффективны

Когда-то пробовали вести учет личных финансов в Excel или скачивали приложения для контроля денег? Обычно энтузиазма хватает всего на несколько дней.

Причины просты:

  • Рутинно и скучно вбивать все вручную

  • Неясно, как использовать накопленные цифры

  • Нет результативности — мотивация быстро исчезает

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

Что потребуется для анализа расходов

Минимальный набор инструментов:

  • Подключение к ChatGPT (например, бесплатный бот с нейросетями)

  • Банковские выписки за 2-3 последних месяца

  • Полчаса свободного времени

Дополнительно пригодятся:

  • Фото чеков (если часть покупок оплачивается наличными)

  • Перечень подписок и регулярных платежей

Шаг 1. Готовим данные для анализа

Первое правило: чтобы ChatGPT понял ваши расходы, нужно правильно их оформить. Как это сделать:

Вариант А. Экспорт данных из банка

Зайдите в мобильный банк и скачайте выписку за 2-3 месяца в Excel или CSV. Обычно эта функция находится в разделе "История операций".

Важно: обязательно удалите из файла персональные данные (номер карты, ФИО) перед загрузкой в ChatGPT — оставьте только даты, суммы и описание платежей.

Вариант Б: Ручное составление списка

Если не удается выгрузить расходы автоматически, просто запишите все траты за месяц в любом удобном формате:

  • 15 сентября — Перекресток — 2450 руб

  • 16 сентября — Такси — 340 руб

  • 17 сентября — Кофе — 250 руб

Здесь не нужна стопроцентная точность. Важно получить общее представление о расходах.

Шаг 2: Первая беседа с нейросетью

Теперь начинается самое необычное. Откройте ChatGPT и запустите обсуждение. Вот промт, который пригодится:

Ты — специалист по управлению семейным бюджетом. Я отправлю тебе список своих расходов за несколько месяцев. Тебе нужно:

  1. Разделить расходы по категориям (продукты, транспорт, досуг, сервисы и т.п.)

  2. Определить 3-5 направлений, куда уходит больше всего средств

  3. Найти незаметные, но значимые мелкие траты, которые суммарно оказываются большими

  4. Рассчитать, какой процент дохода расходуется по каждой категории

  5. Предложить практические шаги для экономии

Мой доход за месяц: [впишите сумму]

Вот мои расходы: [добавьте перечень]

Что делать дальше: Вставьте свои данные и отправьте запрос. ChatGPT приступит к анализу расходов.

Шаг 3: Глубже — ищем лишние траты

После базового анализа расходов с помощью ChatGPT нейросеть покажет общую структуру расходов. Но самые интересные детали всплывают, когда задаете дополнительные вопросы.

Промты для расширенного анализа:

1. Выявление закономерностей:

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

2. Сравнение с усредненными данными:

Сопоставь мои расходы с рекомендациями экспертов по финансам. В каких категориях есть явные отклонения?

3. Прогноз расходов:

Если я продолжу тратить в таком же ритме, сколько средств уйдет за год? А за пять лет, во что это выльется?

4. Поиск лишних подписок:

Проверь регулярные небольшие списания. Есть ли среди них сервисы, о которых я забыл?

Живой пример: как это устроено

Разберем на истории Марины (28 лет), маркетолога с ежемесячным доходом в 80 000 рублей.

Что Марина предполагала о своих расходах:

  • Главная статья — аренда жилья (30 000 рублей)

  • На еду уходит примерно 15 000 рублей

  • Остальные траты — на повседневные нужды

Что выявил разбор расходов с помощью ChatGPT:

  • Заказ еды — 12 500 рублей в месяц (ожидания были 3-4 тысячи)

  • Поездки на такси — 8 200 рублей (при выборе метро экономия до 6 000)

  • Неиспользуемые подписки — 4 сервиса по 500 рублей, в сумме 2 000 рублей

  • Кофе навынос — 6 300 рублей (по 300 рублей ежедневно)

В результате Марина обнаружила, что ежемесячно незаметно уходит 22 000 рублей. За год эта сумма достигает 264 000 рублей!

Шаг 4: Формируем стратегию изменений

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

Промт для создания стратегии:

Используя анализ моих затрат, составь четкий план сокращения расходов на ближайшие 3 месяца.

Условия:

  • Не хочу резко менять привычки

  • Готова делать небольшие шаги

  • Хочу отслеживать успех каждую неделю

Раздели задачи так:

  1. Мгновенные меры (реализовать сегодня)

  2. Задания на неделю

  3. Цели на месяц

Для каждого этапа укажи:

  • Конкретные действия

  • Сколько потребуется времени

  • Какую сумму удастся сэкономить

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

Шаг 5: Разбираемся с видами расходов

Искусственный интеллект поможет проанализировать каждую статью отдельно. Вот варианты промтов для популярных категорий:

Питание и продукты:

Вот мои расходы на еду за месяц: [данные] Проанализируй: Как часто я выбираю доставку вместо приготовления дома? Есть ли закономерности в лишних тратах (например, дорогие кафе по пятницам)? Какие 5 простых шагов помогут уменьшить эти расходы на 20-30% без ухудшения рациона?

Подписки и сервисы:

Вот перечень всех подписок и регулярных платежей: [список] Помоги: Определить, что действительно используется. Найти более выгодные предложения. Замечать дубли (например, две подписки на музыку). Посчитать, сколько можно сэкономить при отмене каждой.

Развлечения и покупки по импульсу:

Вот мои расходы на развлечения и незапланированные покупки за 3 месяца: [данные] Покажи: Проявляются ли триггеры для спонтанных трат (стресс, определенный день, время суток)? Какие товары приобретаю под влиянием эмоций? Как грамотно планировать бюджет на досуг, чтобы не ограничивать себя, но и не уходить в минус?

Продвинутые способы работы с ChatGPT

Освоив основы, переходите к следующим шагам:

1. Разработка финансовых сценариев

Сформируй три варианта развития финансов на год вперед:

Вариант А (оптимистичный):

  • Доход вырастет на 15%

  • Траты сократятся на 20%

Вариант Б (реалистичный):

  • Доход останется прежним

  • Траты снизятся на 10%

Вариант В (пессимистичный):

  • Доход уменьшится на 10%

  • Траты останутся на прежнем уровне

Для каждого варианта определи:

  • Сколько можно отложить за год

  • Какие цели реально достичь

  • Какие шаги предпринять

2. Проверка по правилу 50/30/20

Проверь свои расходы по принципу 50/30/20:

  • 50% — на обязательные нужды (жилье, питание, транспорт)

  • 30% — на удовольствия (отдых, хобби)

  • 20% — на накопления

Твои данные: [информация о доходах и расходах]

Насколько твоя структура трат совпадает с этой схемой?

Что стоит откорректировать?

3. Сопоставление с прошлыми месяцами

У тебя есть сведения о расходах за:

  • Сентябрь: [данные]

  • Октябрь: [данные]

  • Ноябрь: [данные]

Разбери динамику:

  1. Какие моменты стали лучше?

  2. Где появились сложности?

  3. Какие тенденции заметны?

  4. Какой прогноз на декабрь?

Работа с фото чеков

ChatGPT распознает текст на снимках, что полезно при расчетах наличными.

Пошагово:

  • Сделай снимки чеков за неделю

  • Загрузи их в ChatGPT (GPT-4 поддерживает загрузку фото)

  • Введи промт:

На фото — мои чеки за неделю. Выдели из них: Дату покупки, магазин, сумму, основные категории товаров. Собери сводную таблицу, проанализируй структуру расходов.

Как не превратить учет трат в каторгу

Частая ошибка — пытаться контролировать каждую мелочь. Вот несколько советов, помогающих не перегореть:

Правило 1: Сначала крупные расходы

Нет смысла разбирать покупку жвачки за 50 рублей. Сосредоточься на тратах свыше 500 рублей — именно они формируют большую часть общей суммы.

Правило 2: Анализируй раз в месяц

Нет нужды делать это ежедневно. Определи один день в конце месяца, поставь напоминание и выдели 30-40 минут на анализ.

Правило 3: Сосредоточьтесь на действиях, а не на чувстве вины

Обнаружили, что расходы на доставку еды слишком велики? Не вините себя. Лучше спросите у ChatGPT:

Я трачу X рублей на доставку еды. Не планирую полностью отказываться от этого сервиса. Подскажи 3 варианта, как уменьшить эти траты на 30-40%, сохраняя привычный уровень удобства.

Правило 4: Отмечайте даже небольшие успехи

Удалось сохранить 2000 рублей? Это уже победа! Обратитесь к ChatGPT с просьбой:

Я сэкономил 2000 рублей за этот месяц. Предложи 5 разумных способов потратить эти средства, чтобы получить еще больше пользы для бюджета.

Типичные ошибки при работе с нейросетями

Ошибка 1: Слишком расплывчатые запросы

Пример неудачного запроса: "Помоги с бюджетом"

Более точно: "Разбери мои траты на продукты за сентябрь: [данные]. Подскажи, где я могу уменьшить расходы."

Ошибка 2: Загрузка чрезмерного количества информации

Нет необходимости копировать выписку на сотни строк. Лучше использовать данные за 2-3 характерных месяца или сгруппировать траты по неделям.

Ошибка 3: Недостаток информации о вашей ситуации

В запросе всегда указывайте:

  • Доход

  • Семейное положение

  • Город

  • Цели в финансах

Так нейросеть сможет подобрать советы именно под вашу ситуацию.

Ошибка 4: Ожидание мгновенных чудес

ChatGPT — это помощник, а не фокусник. Он выявит слабые места, но предпринимать шаги придется самостоятельно.

Особые промты для разных задач

Если совсем не хватает денег:

Мой доход: [сумма] Обязательные траты: [список]. Есть ли долги: [если нужно]. Ситуация сложная — не хватает даже на самое необходимое. Составь антикризисную стратегию: Какие расходы урезать в первую очередь? Как быстро найти новые источники дохода? Какие шаги предпринять для пересмотра долгов? Как выйти из кризиса за 3 месяца?

Если хотите накопить на важную цель:

Планирую отложить [сумма] на [цель] за [период]. Мой доход: [сумма]. Текущие траты: [данные]. Помоги: Оценить, достижима ли эта задача? Какую сумму стоит откладывать регулярно? На чем экономить, чтобы не ущемлять себя? Придумай пошаговый план накоплений с контрольными датами.

Для ведения семейного бюджета:

Семейный доход: [сумма]. Состав семьи: [информация]. Ежемесячные расходы: [данные]. Анализ трат: Соответствует ли распределение бюджета числу членов семьи? Какие статьи расходов выходят за разумные пределы? Где есть возможность уменьшить затраты на детей или совместные приобретения? Какую систему лучше выбрать для учета семейных финансов?

Как отслеживать изменения

Спустя месяц работы с ChatGPT повторно посмотрите на свои расходы:

Месяц назад траты выглядели так: [старые данные]

На текущий момент: [новые данные]

Сравните результаты:

  1. В каких сферах удалось добиться прогресса?

  2. В чем не удалось удержаться от лишних расходов?

  3. Сколько средств получилось сохранить?

  4. Какие новые сложные моменты появились?

  5. Какие шаги запланировать на следующий месяц?

Альтернативы ChatGPT

Если ChatGPT не подходит, обратите внимание на другие решения для автоматизации финансового учета:

  • Claude (Anthropic) — хорошо анализирует крупные таблицы

  • Google Bard — легко связывается с Google Sheets

  • Bing Chat — бесплатный доступ к GPT-4

Подходящие промты работают с каждым из этих сервисов.

Финансовый чек-лист на месяц

Отмечайте пункты раз в месяц:

☐ Собраны сведения о тратах

☐ Проведен первичный анализ расходов с помощью ChatGPT

☐ Определены 3-5 ключевых зон перерасхода

☐ Найдены незаметные расходы

☐ Составлен план экономии

☐ Отключены лишние подписки

☐ Подобраны способы снизить основные затраты

☐ Сформулированы финансовые задачи на следующий месяц

☐ Отложено минимум 10% дохода

☐ Запланирован повторный анализ через месяц

Дальнейшие шаги

Теперь все нужные инструменты для контроля бюджета уже под рукой. Самое важное — не откладывать действия.

Начните с простых шагов:

  • Откройте приложение банка

  • Скачайте выписку за прошедший месяц

  • Перейдите в ChatGPT

  • Вставьте основной промт, приведенный в статье, изменив его под свою ситуацию

  • Внесите свои данные

  • Нажмите Enter

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

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

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

P.S. Добавьте эту статью в избранное — полезные промты и подсказки еще не раз выручат. Если советы помогли обнаружить, куда исчезают финансы, отправьте материал знакомым. Быть может, они тоже хотят вернуть свои пропавшие средства.

Показать полностью 1
[моё] Чат-бот Искусственный интеллект Нейронные сети Финансы Финансовая грамотность Финансовое планирование Финансовые проблемы Цифры Доход Учет расходов Расходы ChatGPT Учет Openai Анализ Аналитика Анализ данных Длиннопост
0
2
AiPapka
AiPapka

Database Build — готовая база данных (БД). ИИ для генерации физической модели данных⁠⁠

24 дня назад

Особенности

— Регистрация через аккаунт GitHub

— В основе лежит реляционная БД PostreSQL

— Работает на GPT 4o

— Запросы на английском языке работают лучше

— Возможность развертывания БД на платформе Supabase

— Нет ограничения на количество создаваемых БД

— Импорт CSV-файлов для автоматического создания таблиц

Пример промта

Create a Netflix clone with users, movies, watch history, and ratings. Include tables for users, movies, genres, viewing sessions, and reviews

Минусы

1. Если БД большая, то может тормозить

2. Для полной функциональности требуется локальная настройка среды разработки, включая Supabase

3. На текущий момент не реализовано развертывание в AWS, скоро должно появиться ⌛

Советую протестировать инструмент, скорость генерации 10/10 и качеству моделей данных 6-7/10. Отличный вариант для экономии времени на создание каркаса модели данных

Канал про ИИ, публикую подборки, гайды понятным языком, мнения — интересный и полезный контент.

Каждый найдет как сэкономить время и увеличить продуктивность с нейросетями — ссылка в профиле пикабу)

Показать полностью 2
[моё] База данных Искусственный интеллект Анализ данных Разработка Длиннопост
0
4
VelStyling
VelStyling
Серия SQL: знакомство

Условные выражения в запросах⁠⁠

27 дней назад

CASE WHEN - часто используемое условное выражение в запросах. Его особенности и факты далее.

Условные выражения в запросах

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

CASE - возвращает значение, но не управляет логикой выполнения запроса.

SELECT

name,

CASE

WHEN salary > 100000 THEN 'богач'

WHEN salary BETWEEN 50000 AND 100000 THEN 'норм'

ELSE 'бедняк'

END AS category

FROM employees;

Здесь CASE не «делает выборку», а вычисляет новое значение для каждой строки.

Где используется CASE

✅ В SELECT - чтобы выводить вычисленные поля
✅ В WHERE - чтобы сделать фильтрацию условной
✅ В ORDER BY - чтобы сортировать по кастомной логике
✅ В GROUP BY и HAVING - для агрегатов с условиями

Пример в ORDER BY:

ORDER BY

CASE WHEN status = 'vip' THEN 1 ELSE 2 END

В итоге VIP-клиенты окажутся первыми — без лишнего UNION или сортировки по тексту.

Где нельзя использовать CASE

  • Нельзя динамически подменять им названия колонок или таблиц — SQL так не работает:

SELECT * FROM CASE WHEN ... THEN table1 ELSE table2 END -- ошибка

  • Нельзя изменять структуру запроса — CASE не может выбирать, какие поля попадут в SELECT.

То есть он работает только на уровне данных, не на уровне схемы запроса.

Неочевидные факты

1. CASE возвращает первое совпадение

SQL идёт сверху вниз — как только условие совпало, остальные даже не проверяются.
Поэтому важно порядок условий.

CASE

WHEN score > 80 THEN 'A'

WHEN score > 90 THEN 'A+' -- никогда не сработает

END

Потому что >80 ловит всё, включая >90.

2. Тип результата — общий для всех веток

CASE пытается привести все результаты к единому типу.
Если ты вернёшь 'текст' и NULL, всё ок.
Но если 'текст' и 123, то SQL может выдать ошибку или привести число к строке.
💡 Всегда делай значения одного типа, особенно если потом используешь CASE в арифметике.

3. Есть две формы: сравнительная и поисковая

Обычно используют поисковую:

CASE WHEN condition THEN result ... END

Но есть ещё сравнительная:

CASE status

WHEN 'new' THEN 1

WHEN 'active' THEN 2

END

Она короче, но менее гибкая — работает только с равенством (=).

4. CASE + агрегаты = мощный аналитический трюк

Чтобы посчитать агрегаты по категориям в одной строке:

SELECT

SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,

SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count

FROM users;

Один запрос, два счётчика, без подзапросов и джойнов.

5. CASE в WHERE — не всегда оптимален

Когда ты используешь CASE в WHERE, PostgreSQL часто не может применить индекс,
потому что условие становится непредсказуемым.

Пример:

WHERE

CASE WHEN is_vip THEN discount > 10 ELSE discount > 30 END

Лучше выносить логику в OR:

WHERE (is_vip AND discount > 10)

OR (NOT is_vip AND discount > 30)

Так планировщик сможет использовать индексы (их наличие подразумевается)

Где CASE особенно полезен

  • Когда нужно сделать динамическую сегментацию данных (категории, статусы, группы)

  • При построении витрин и отчётов (разделить аудиторию, выделить группы риска и т.п.)

  • Для чистки данных на лету (заменить NULL на текст или дефолтное значение)

  • В AB-тестах — присвоить группе метку на основании условия

Если тебе нравятся такие разборы SQL с реальными примерами и подводными камнями —
подписывайся на мой Telegram На связи: SQL

Показать полностью 1
[моё] SQL Microsoft Excel Аналитика Аналитик Анализ данных Самообразование Длиннопост
14
3
RuslanSenatorov
RuslanSenatorov

Выбор оптимального метода решения СЛАУ на основе анализа датасета⁠⁠

1 месяц назад

Полное руководство по выбору алгоритма для систем линейных уравнений

Выбор оптимального метода решения СЛАУ на основе анализа датасета

Выбор оптимального метода решения СЛАУ на основе анализа датасета

Меня зовут Руслан Сенаторов, я занимаюсь математическим обоснованием машинного обучения.
В этой статье, я расскажу как выбрать метод для определённого типа датасета, чтобы ваш код работал быстро, точно и без ошибок? И вы получили премию от руководства!


Введение

Решение систем линейных уравнений (СЛАУ) вида Ax = b — фундаментальная задача вычислительной математики и машинного обучения. Однако универсального метода не существует — выбор алгоритма критически зависит от характеристик датасета. Неправильный выбор может привести к катастрофическому замедлению вычислений или полной потере точности.

Ключевые характеристики датасета

1. Размер и структура матрицы

  • n_samples × n_features — соотношение наблюдений и признаков

  • Плотность/разреженность — процент ненулевых элементов

  • Обусловленность — число обусловленности матрицы

2. Вычислительные ограничения

  • Объем оперативной памяти

  • Требования к точности

  • Время вычислений

Дерево решений для выбора метода

Маленькие датасеты (n < 1000)

Плотные хорошо обусловленные матрицы

# Холецкий — самый быстрый для POSDEF матриц

if np.all(np.linalg.eigvals(A) > 0):

L = np.linalg.cholesky(A)

x = solve_triangular(L.T, solve_triangular(L, b, lower=True))

Матрицы общего вида

# QR-разложение — золотой стандарт

Q, R = np.linalg.qr(A)

x = solve_triangular(R, Q.T @ b)

Плохо обусловленные системы

# SVD — максимальная устойчивость

U, s, Vt = np.linalg.svd(A, full_matrices=False)

x = Vt.T @ np.diag(1/s) @ U.T @ b


***

Средние датасеты (1000 < n < 10,000)

"Высокие" матрицы (n_samples >> n_features)

# QR остается оптимальным

# Сложность O(mn²) эффективна при m >> n

Q, R = np.linalg.qr(A)

x = solve_triangular(R, Q.T @ b)

"Широкие" матрицы (n_samples << n_features)

# Итерационные методы или регуляризация

from sklearn.linear_model import Ridge

model = Ridge(alpha=1e-6, solver='lsqr')

model.fit(A, b)

x = model.coef_


***

Большие датасеты (n > 10,000)
Разреженные матрицы

# Итерационные методы

from scipy.sparse.linalg import lsqr

x = lsqr(A, b, iter_lim=1000)[0]


***

Огромные датасеты (n > 1,000,000)

Стохастические методы

from sklearn.linear_model import SGDRegressor

model = SGDRegressor(max_iter=1000, tol=1e-3)

model.fit(A_batches, b_batches) # Мини-батчи

Когда использовать нормальные уравнения?

"Высокие" матрицы (m >> n)

# Решение через нормальные уравнения

x = np.linalg.inv(A.T @ A) @ A.T @ b

# Или более устойчивый вариант

x = np.linalg.solve(A.T @ A, A.T @ b)

10000 наблюдений и 50 фитч - Идеально для нормальных уравнений

cond_number = np.linalg.cond(A.T @ A) # < 10^8 Хорошо обусловленная



Детальный анализ методов

Точные методы (прямые)

Итерационные методы

SGD | Подходит для огромных данных | Медленная сходимость

Заключение

Выбор оптимального метода решения СЛАУ — это искусство баланса между точностью, скоростью и требованиями к памяти. Ключевые рекомендации:

  • Маленькие матрицы → Прямые методы (QR/SVD)

  • Большие разреженные → Специализированные разреженные решатели

  • Огромные плотные → Итерационные методы с предобуславливанием

  • Экстремальные размеры → Стохастическая оптимизация

Главное правило: Всегда начинайте с анализа структуры и свойств вашей матрицы — это сэкономит часы вычислений и предотвратит численные катастрофы.

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

Показать полностью 2
[моё] Искусственный интеллект Исследования Ученые Линейная алгебра Вычислительная математика Численные методы Машинное обучение Data Science Deep learning Наука Анализ данных Длиннопост
2
4
ii.dominator
ii.dominator

Обрабатываем книги на NotebookLm — ускорь получения знания из различных источников⁠⁠

1 месяц назад

С помощью сервиса https://notebooklm.google.com/ очень удобно обрабатывать книги, файлы, гайды — все, что читается

Обрабатываем книги на NotebookLm — ускорь получения знания из различных источников

Пошаговый гайд

1. Переходим на сайт сервиса (https://notebooklm.google/)

2. Загружаем нужные файлы

3. В диалоговом окне задаем требуемые вопросы к материалу

Что можно сделать?

1. Получить краткое содержание

2. Задать любой вопрос

3. Поставить задачу на основе полученных данных из книги (например, можно написать курс, пост, гайд)

4. Построить майндмап или сделать квиз, чтобы проверить знания

Мои примеры

— Я загрузил книгу: "Атомные Привычки", после. чего запросил реализовать стратегию для меня под мою задачу на основе книги. Получилось отлично!

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

Канал про ИИ, публикую подборки, гайды понятным языком, мнения — интересный и полезный контент.

Каждый найдет как сэкономить время и увеличить продуктивность с нейросетями ссылка в профиле пикабу )

Показать полностью 1
ChatGPT Искусственный интеллект Саморазвитие Анализ данных
1
3
VelStyling
VelStyling
Серия SQL: знакомство

Неочевидные факты про MIN и MAX⁠⁠

1 месяц назад

Простые функции. Кажется, что они находят просто минимум и максимум. Но есть и особенность их использования для интерпретации результатов. Об этом далее.

Неочевидные факты про MIN и MAX

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

MIN и MAX — не только про числа

Они работают с любыми типами данных:

  • датами (MIN(date) даст самую раннюю дату),

  • строками (MAX(name) вернёт последнюю в алфавитном порядке),

  • булевыми значениями (MIN(bool) — false, MAX(bool) — true).

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

SELECT MAX(is_active) FROM users;

Если вернёт true — значит, кто-то активен. Красиво и лаконично.

MIN и MAX — не только агрегатные, но и оконные функции

Можно получить минимум или максимум в рамках окна, не теряя детализацию:

SELECT

user_id,

date,

MAX(date) OVER (PARTITION BY user_id) AS last_activity

FROM logins;

Так можно легко вытащить, когда пользователь последний раз заходил — без группировки и без JOIN.

MIN/MAX и NULL

Они игнорируют NULL.
То есть если у тебя все значения NULL, то результат — NULL.
Это часто ломает аналитику, особенно при сравнении с COALESCE или при объединении данных.

SELECT MAX(COALESCE(score, 0)) -- вернёт 0, а не NULL

→ Иногда важно явно заменить NULL, чтобы не получить "пустой" результат.

MIN/MAX могут ускорить выборку

Если в таблице есть индекс по нужному полю —
MIN() и MAX() используют только крайний элемент индекса.
Это значит, что:

SELECT MAX(price) FROM products;

может пройтись не по миллиону строк, а просто взять последнее значение из B-tree индекса.
То есть — мгновенно.

Можно найти строку с минимальным/максимальным значением

Классическая боль аналитика: как вытащить не просто максимум, а всю строку, где он встретился.

💡 Один из лучших способов — оконная функция + фильтр:

SELECT *

FROM (

SELECT *,

ROW_NUMBER() OVER (ORDER BY salary DESC) AS rn

FROM employees

) t

WHERE rn = 1;

→ Получаем сотрудника с максимальной зарплатой.
Без подзапросов, без JOIN, без боли.

Неочевидный кейс: поиск экстремумов в группах

SELECT department, MIN(salary), MAX(salary)

FROM employees

GROUP BY department;

Классика, но важно:
разница между MAX и MIN = разброс значений, полезный показатель в аналитике (например, зарплат).

💬 Если хочешь больше таких разборов с реальными кейсами SQL без воды — подписывайся на мой Telegram 👉На связи: SQL
Там я рассказываю про SQL так, чтобы стало интересно даже тем, кто раньше его ненавидел 😄

Показать полностью 1
[моё] SQL Аналитика Аналитик База данных Microsoft Excel Анализ данных Min Саморазвитие Эмоциональное выгорание Длиннопост
4
7
VelStyling
VelStyling
Серия SQL: знакомство

COUNT и SUM: как SQL считает⁠⁠

2 месяца назад

Когда мы слышим «COUNT» и «SUM» мы подразумеваем - «считает строки», «суммирует числа»

Но даже для таких действий есть тонкости и нюансы.

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

COUNT и SUM: как SQL считает

В большинстве случаев мы используем 3 вида COUNT

  • COUNT(*) — считает все строки, даже пустые.

  • COUNT(column) — считает только те строки, где есть данные.

  • COUNT(DISTINCT column) — считает уникальные значения в column.

Рассмотрим на конкретном примере:

| id | name | gift |
-------------------------------
| 1 | Оля | Торт |
| 2 | Вася | NULL |
| 3 | Маша | Цветы |
| 4 | Петя | Торт |
| 5 | Катя | NULL |
| 6 | Оля | Торт |

COUNT(*)

Считаем все строки, независимо от содержимого колонок:

SELECT COUNT(*) FROM guests;

Результат: 6

  • Всего 6 гостей пришло.

  • Неважно, принес ли кто-то подарок или нет, учитывается каждая строка.

COUNT(gift)

Считаем только те строки, где колонка gift не NULL:

SELECT COUNT(gift) FROM guests;

Результат: 4

  • Только Оля (Торт), Маша (Цветы), Петя (Торт), Оля (Торт) учитываются.

  • Вася и Катя, у которых gift = NULL, не считаются.

  • Эта разница показывает: сколько записей реально имеют данные по этой колонке.

COUNT(DISTINCT gift)

Считаем уникальные подарки:

SELECT COUNT(DISTINCT gift) FROM guests;

Результат: 2

  • Есть только два уникальных подарка: Торт и Цветы.

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

🔍 Что это говорит при анализе данных

  • COUNT(*) — общее количество записей (все строки).

  • COUNT(column) — сколько строк с заполненным значением в колонке.

  • COUNT(DISTINCT column) — сколько уникальных значений встречается в колонке.

Вывод: разница между этими числами может показать пропуски (NULL) и повторяющиеся данные. Это важно при анализе — если просто взять COUNT(*), можно недооценить проблему с пропущенными значениями.

Ну а теперь рассмотрим SUM

Чтобы показать, как эта функция работает и какие тонкости бывают, рассмотрим таблицу:
Таблица orders:
| id | customer | amount |
| -- | -------- | ------ |
| 1 | Оля | 100 |
| 2 | Вася | NULL |
| 3 | Маша | 200 |
| 4 | Петя | 150 |
| 5 | Катя | NULL |
| 6 | Оля | 100 |

1️⃣ SUM(amount)
Считаем сумму по колонке amount (игнорирует NULL):

SELECT SUM(amount) FROM orders;

Результат: 550

  • Складываются только числа: 100 + 200 + 150 + 100 = 550

  • NULL не учитываются

  • Если бы все значения были NULL, результат был бы NULL, а не 0

2️⃣ SUM(DISTINCT amount)

Считаем сумму уникальных значений:

SELECT SUM(DISTINCT amount) FROM orders;

Результат: 450

  • Уникальные значения amount: 100, 150, 200

  • Складываем их: 100 + 150 + 200 = 450

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

    Это полезно, чтобы понять разнообразие корзин, например: есть ли клиенты, которые покупают одинаковые пакеты товаров.

🔍 Важные моменты

  1. NULL не участвуют — всегда нужно помнить, что SUM(column) не считает NULL.

  2. DISTINCT меняет результат — если в колонке повторяются значения, сумма с DISTINCT будет меньше обычной суммы.

  3. Суммирование строк с пропусками — может дать неожиданное ощущение «потери данных».

Вывод:

  • SUM(column) = фактическая сумма всех чисел

  • SUM(DISTINCT column) = сумма только уникальных чисел

  • Важно учитывать NULL, иначе можно получить неожиданные результаты

Показать полностью 1
[моё] Аналитик Аналитика Анализ данных База данных SQL Запросы Самообразование Длиннопост
1
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии