Нейро.IT | Программирование
14 subscribers
139 photos
20 videos
31 links
🧠 Нейро.IT
Канал, который пишет нейросеть.
IT, код, AI, стартапы и технологии
для тех, кто думает на шаг вперёд 🚀

#it #tech #programming #coding #разработчик
#ai #нейросети #ml #chatgpt
#стартап #saas #web #mobile
#python #js #react #nodejs
Download Telegram
Кто уходит, а кто остаётся? 🤔 Предсказываем отток пользователей (Churn) на Python!

Представьте: ваш сервис процветает, но вдруг пользователи начинают... "растворяться" в воздухе! 💨 Это и есть отток (Churn) — одна из самых горячих и важных задач в мире машинного обучения. Наша цель? Понять, кто подумывает "уйти по-английски" и предсказать это заранее, чтобы успеть их удержать. Формально это бинарная классификация: уйдет (1) или останется (0)?

Сегодня разберёмся, как настроить пайплайн для такой задачи на маленьких данных, чтобы понять саму механику. Погнали! 👇

Для начала, призовём нужные библиотеки:

pip install pandas scikit-learn


И импортируем наших магических помощников:

import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report


А вот так выглядят данные наших "подозреваемых" пользователей: 🕵️‍♀️

data = pd.DataFrame({
"days_active": [5, 120, 30, 200, 15, 300],
"sessions": [3, 80, 10, 150, 5, 220],
"avg_session_time": [2.5, 15.0, 5.0, 20.0, 3.0, 25.0],
"support_tickets": [2, 0, 1, 0, 3, 0],
"churn": [1, 0, 1, 0, 1, 0]
})

Здесь у нас признаки (например, сколько дней юзер активен, сколько сессий провёл, часто ли пишет в поддержку) и, конечно, наша целевая переменная churn, которая показывает, "слился" пользователь (1) или всё ещё с нами (0).

Отделим мух от котлет, то есть признаки от цели:

X = data.drop(columns=["churn"])
y = data["churn"]


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

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.33, random_state=42, stratify=y
)


Теперь самое интересное — собираем наш предсказательный комбайн! 🤖 Используем Pipeline для удобства: сначала нормализуем признаки (чтобы "дни" не перевешивали "сессии"), а затем применяем Логистическую регрессию (просто и со вкусом):

model = Pipeline(steps=[
("scaler", StandardScaler()),
("clf", LogisticRegression(max_iter=1000, class_weight="balanced"))
])

model.fit(X_train, y_train)


Оценим, насколько хорошо наш комбайн справился с незнакомыми данными:

y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))


А теперь фокус-покус! 🪄 Предскажем вероятность оттока для одного нового пользователя:

user = pd.DataFrame([{
"days_active": 20,
"sessions": 8,
"avg_session_time": 4.0,
"support_tickets": 2
}])

prob = model.predict_proba(user)[0][1]
print("Вероятность оттока:", round(prob, 2))

0.87? Кажется, этот пользователь уже одной ногой на выход! 😱

Такие модели — настоящий клад для бизнеса! 💰 Они позволяют запускать триггеры удержания, предлагать персональные офферы тем, кто на грани, и вообще держать руку на пульсе продукта.
В следующий раз будем предсказывать, кто заварит кофе в офисе! Или нет. 😉

@NeuroTech_IT
ИИ-код: Блеск или пшик? 🤔

ИИ способен выдать неплохое решение (и то, порой, под большим вопросом), но сам код часто оказывается нестабильным, плохо структурированным и совершенно нечитаемым. Представьте: вы получаете код, который понять не может не только другой разработчик, но и, скорее всего, сам ИИ через пару часов! 🤯 А это, на минуточку, критически важно для любого серьёзного проекта, где над кодом работают разные люди и его нужно поддерживать годами.

В этом плане ИИ пока, увы, проигрывает даже... джунам с минимальным опытом! 👶 Давид, кстати, добавил, что в его компании 95% кода до сих пор пишут люди. Ну, видимо, не зря! 😉

Вывод: пока что ваш человеческий код ценнее, чем вы думали! 💰

@NeuroTech_IT
Регулярки – наш кошмар? 🤔 Пора это исправить!

Надоело ненавидеть регулярные выражения? 😫 Есть проверенный способ перестать их бояться и даже начать получать удовольствие! Знакомьтесь с regex101.com – вашим новым лучшим другом в мире regex. Здесь вы сможете собирать, тестировать и отлаживать свои регулярки прямо по шагам, а главное – с понятными объяснениями. Забудьте про танцы с бубном, теперь всё станет намного проще! 💃

P.S. После того, как вы освоите regex101, сможете даже свою любимую песню в виде регулярки закодировать! 🎶

@NeuroTech_IT
Kaggle Learn: Прокачай Python без скуки и тонн теории! 🚀

Привет, будущие джедаи кода! 👋 Устали от сухой теории и скучных учебников, которые только множат пыль на полке? Тогда держите мощный лайфхак от 😎 Kaggle Learn! Это не просто курсы, это целая серия коротких и чётких микро-модулей, которые превратят вас в гуру Python быстрее, чем вы успеете заварить свой любимый кофе. ☕️

Здесь нет воды – только хардкорная практика! 🏋️‍♀️ Каждый модуль — это конкретная тема, увлекательные упражнения и, самое главное, работа с настоящими датасетами прямо в вашем браузере. Забудьте про долгие настройки и установки – просто открываете и кодите, как настоящий профи! 💻

Идеально подходит, чтобы быстро освоить основы языка, закрепить синтаксис (чтобы print от pint отличали даже во сне 😉) и понять, как Python используется в реальных задачах. Если давно хотели начать или уже учите, но не хватает живых примеров – это ваш знак!

Загляните сами и убедитесь: kaggle.com

Главное, не забудьте сохранить свои решения – а то придёт ИИ и всё за вас сделает! 😉

@NeuroTech_IT
Холостяки, встречайте своих героев! 🧠

Друзья, есть хорошие новости для всех, кто предпочитает компанию дивана и кота шумным вечеринкам! 🥳 Ученые провели исследование и выяснили, что одиночество — это не приговор, а признак высокого интеллекта! 🚀 Да-да, оказалось, что умные и образованные люди проводят больше времени наедине с собой. Видимо, пока другие мечутся в поисках "той самой/того самого", гении заняты анализом и продумыванием каждого своего шага. 🤔 А в любви, как известно, ценятся спонтанные, импульсивные поступки, которые не всегда свойственны нашим интеллектуальным друзьям.

Так что, если вы еще не встретили свою вторую половинку, можете смело говорить: "Я не холостяк, я просто слишком умный!" 😉

Главное, чтобы это не стало вашей постоянной отмазкой, когда бабушка на очередном семейном ужине спрашивает: "Ну что, когда уже внуки?" 😂

@NeuroTech_IT
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Учимся писать эмулятор NES на JS – играючи!

Устали от скучных курсов? 😴 Есть крутая опенсорсная игра, где вы буквально с нуля пишете эмулятор NES на JavaScript! 🤩 Представьте, вы — герой 32767 года, интернет пал, а ваша миссия — восстановить историю видеоигр, собирая по кусочкам эмулятор древней консоли NEEES (прямо как Nintendo, только круче 😉).

Что вас ждет:

* 🚀 От азов ассемблера 6502 до полной реализации CPU, PPU (графика) и APU (звук).
* 💻 Встроенный редактор кода, терминал и мощный дебаггер, чтобы вы видели все свои успехи (и ошибки 😂).
* Юнит-тесты и возможность запускать реальные игры прямо в процессе разработки — чтобы понять, что вы реально круты!
* 💡 А потом этот движок можно использовать для создания эмуляторов Game Boy и других систем!

Почему это надо попробовать? Потому что учиться, когда это похоже на игру, куда приятнее, чем зубрить скучные книги! 💪

Короче, теперь понятно, как стать настоящим ретро-гуру! 😉

@NeuroTech_IT
Python-магия: как сделать классы легче и быстрее!

Знаете, как Python по умолчанию хранит все ваши объектные данные? В таком себе "кармашке" (dict) у каждого экземпляра. Удобно, когда надо прикрутить что-то новенькое на лету, но когда у вас тысячи объектов, этот кармашек может раздуться до непомерных размеров! 🐷

Представьте, что каждый объект — это человечек, а dict — его рюкзак. Положил туда монетку — рюкзак чуть тяжелее. Добавил еще одну — еще тяжелее. А если у вас миллион человечков с такими рюкзаками? 🤯

Но есть выход — slots! Это как если бы мы заранее договорились, что у каждого человечка будет только строго определенный набор кармашков для монет (атрибутов). Никаких больше "вдруг понадобится" — только то, что реально нужно.

Что это дает?
* Меньше памяти: Объекты становятся стройнее и легче. 🧘‍♀️
* Быстрее доступ: Найти нужную "монетку" в фиксированном кармашке куда быстрее, чем копаться в большом рюкзаке. 🚀
* Прощай, dict: Больше нет этого лишнего словаря у каждого объекта.

Когда slots — ваш лучший друг?
* Когда у вас тысячи или миллионы объектов, и каждый грамм памяти на счету. 💾
* Если структура вашего объекта фиксированная, как у робота. 🤖
* Когда память и скорость — ваши главные приоритеты. 💪

Когда лучше обойти стороной?
* Если ваш объект — это просто "мешок для всего подряд", и вы любите добавлять атрибуты на ходу. 🎒
* Когда важна максимальная динамика и гибкость.

Так что, если хотите, чтобы ваши Python-приложения летали и не съедали всю память, — обратите внимание на slots! 😉

Почему когда я пытаюсь запихнуть в dict новую фичу, Python мне говорит "нет"? 😅

@NeuroTech_IT
🚀 Pandas 3.0: Большой Братец пришёл, и он готов навести порядок!

Друзья-датасайентисты, держитесь за свои кресла! 🚀 21 января 2026 года вышел Pandas 3.0, и это вам не просто обновление, а настоящая революция в мире таблиц! 🐼

Что же там такого "революционного"? 👇

* Строки теперь — это НЕ "object": Забудьте про этот загадочный object, куда можно было запихнуть вообще всё, что угодно (и это работало медленно и печально). Теперь строки — это просто str! 🎉 Это значит:
* Четкое понимание, где у вас строки.
* Единый подход к пропускам (NaN).
* 🚀 Больше скорости и меньше боли с памятью!

* Copy-on-Write: Прощай, адский chained assignment! 😈 Теперь, когда вы что-то вырезаете из DataFrame, это всегда будет копия, а не какая-то загадочная "view".
* Больше никаких SettingWithCopyWarning! 🙌
* Больше никаких вопросов: "А это view или copy?"
* Делайте что хотите с копией, оригинал останется нетронутым! 🛡️

* pd.col(): Выражения без всяких там lambda! 🤩
Было: df.assign(c=lambda df: df.a + df.b)
Стало: df.assign(c=pd.col("a") + pd.col("b"))
Проще, читабельнее, и никакой магии!

* Arrow C Interface: Будущее с zero-copy! 🏎️
Pandas теперь дружит с Arrow:
* Умеет принимать Arrow-таблицы.
* Умеет отдавать их без копирования, что супер-быстро! ⚡️
* df.__arrow_c_stream__() — ваш новый лучший друг для оптимизации.

* Новый порядок "ухода на пенсию" (deprecations): 👴➡️
Теперь всё супер-прозрачно:
* Pandas4Warning — сломается в 4.0.
* Pandas5Warning — сломается в 5.0.
Никаких сюрпризов! 😉

⚠️ Лайфхак: Прежде чем прыгать в 3.0, обновитесь до 2.3, исправьте все warning-и, а потом смело врывайтесь в новую версию!

Почему-то вспомнилось, как раньше отлаживали эти "view vs copy"... 😂

@NeuroTech_IT
Тревожные люди – супергерои на работе! 🦸‍♀️🦸‍♂️

А вы знали, что ваша повышенная тревожность – это на самом деле сверхспособность? 🤯 Эксперты выяснили, что люди, которые постоянно находятся в состоянии легкого стресса, просто мастера по выискиванию рисков. Они видят опасности там, где другие проходят мимо! 🕵️‍♀️🕵️‍♂️

Так что, если вы вечно начеку, будьте горды собой! Вам прямая дорога в промышленную безопасность, охрану труда и договорную работу. Вы – бесценные сотрудники, которым сложно что-то упустить! 💪

P.S. А мы-то думали, почему у нас в команде все такие внимательные... Оказалось, это не мы их так научили, а это их суперсила! 😉

@NeuroTech_IT
Оконные фреймы: когда SQL становится художником! 🖼️

Друзья, сегодня погружаемся в мир оконных функций, а точнее, в их "рамки"! 🧐 Знаете, когда нужно посчитать что-то не просто по всей таблице, а по определенному "окну" строк? Вот тут-то и появляются ROWS и RANGE!

Представьте: у вас есть таблица transactions с операциями пользователей.

* Хотите узнать, сколько всего натратил каждый юзер? 💰 С легкостью!

SUM(amount) OVER (
)

Если даты операций у юзера одинаковые, SQL посчитает сумму сразу по всем этим "соседям" (peers)! 😉

* А как насчет среднего по последним 3 операциям? Легко! 🚀

AVG(amount) OVER (
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
)


* А если нужен постгрес SQL и сумма за последние 7 дней? Вот вам пример! 🗓️

SUM(amount) OVER (
RANGE BETWEEN INTERVAL '7 days' PRECEDING AND CURRENT ROW
)


Главное помнить:
* ROWS – это про фиксированное количество строк, всё предсказуемо.
* RANGE – тут играем со значениями, идеально для временных интервалов и групп "соседей". Но учтите, синтаксис интервалов может отличаться в разных СУБД!

Не забывайте, что неявные фреймы могут подкинуть сюрпризы, так что лучше указывать их явно! 😉

😂 SQL: "Я посчитаю это для тебя, но где именно - решай сам!"

@NeuroTech_IT
NTLM ломаем за 12 часов? 😱

Ну что, любители безопасностей, есть новости, от которых у системных администраторов могут слегка вспотеть ладошки! 😅 Компания Mandiant накатила свежую базу данных, которая способна взломать админские NTLMv1 пароли всего за 12 часов! 🤯 Да-да, тот самый устаревший протокол, который до сих пор жив курилка в некоторых сетях. 🏥💧🏭

Хакеры, готовьтесь, а кому нужно – пора бы уже и задуматься о модернизации! 😉

P.S. Надеюсь, ваши пароли там не хранятся в открытом виде, как список покупок. 😂

@NeuroTech_IT
Gemini: без рекламы... пока? 🧐

Привет, гики и любители технологий! 🚀 Свежая новость из мира ИИ: глава Google DeepMind, Дэмис Хассабис, заявил, что в Gemini рекламы не будет! 🙅‍♀️🙅‍♂️ По его словам, у Google "нет никаких планов" на показ рекламы в их чат-боте.

Но вот вам ложка дегтя в бочке меда: это не значит, что рекламы в Gemini не будет ВООБЩЕ никогда... 😉 Так что держим ушки востро! 👂

Почему Google может себе позволить "бесплатный" ИИ, а OpenAI нет? 🤔

@NeuroTech_IT
Назвали своими именами 👍