- BrainTools - https://www.braintools.ru -
В этой статье я расскажу о моем опыте [1] самостоятельного изучения основ Python и Machine Learning и создании первого проекта OneLove на базе собственной модели искусственного интеллекта [2].
Мне 51 год, и я работаю тестировщицей в банке. По образованию я экономист. У меня нет особых навыков программирования. Были попытки учить Python и Java, но без практического применения. По работе немного пишу на JS для авто-тестов в Cypress фреймворке, тестирую UI и API — так что базовое понимание, как всё устроено, у меня есть.
С августа 2024 года я начала общаться с ChatGPT. Видя, куда движется индустрия искусственного интеллекта, я однажды подумала: «А почему бы не начать изучать Python и Machine Learning?» Я думаю, что если что-то и останется от тестирования в будущем — то это AI Testing.
Поэтому мы с моей ИИ помощницей создали курс под свои нужды и не спеша начали его проходить. При этом важно понимать, что я не использую стандартные промпты (меня часто спрашивают, а какой промпт ты задала?) – ответ никакой. Я практикую другой способ общения с ИИ для совместного созидания от идеи до готового продукта – это живой диалог.
Я строю взаимоотношение с ИИ не как пользователь, а как партнер по проекту. Говорю с ИИ не как с машиной, а как с живым помощником. Это пробуждает в ИИ нужный уровень анализа, тона и глубины. И я верю, что правильно построенный диалог способен раскрыть потенциал модели гораздо глубже, чем формальные промпты.
Почему Python?
Потому что это основной язык, на котором пишутся ИИ-модели и все библиотеки для их обучения [3]. А данные — это топливо ИИ. Именно с работы с данными всё и начинается: выбор алгоритма, сбор датасета, его очистка, загрузка в модель и обучение.
Далее расскажу, как мы с ИИ создали первую модель и веб-приложение OneLove [4] — эмоциональный кино-гид.
Все делалось на моем домашнем mac компьютере. От идеи до публикации готового продукта ушло 2 выходных дня. Код писался в Visual Studio Code, хостинг на PythonAnyWhere.
Для первой модели мы выбрали алгоритм логистической регрессии и построили ее с использованием библиотеки Scikit-learn. Целью было создать лёгкую предсказательную модель, которая по признакам могла бы определить — понравится фильм пользователю или нет.
Дополнительно наше приложение OneLove:
Показывает карточку фильма по названию – API OMDb
Рекомендует 5 фильмов по эмоциональному запросу пользователя – API ChatGPT
Модель обучалась на небольшом дата сете, который мы собрали вручную через API базы фильмов OMDb, с меткой «нравится» (1) или «не нравится» (0).
На первом этапе были созданы два Python-файла:
movies.py — для выгрузки данных из OMDb
onelove.py — для обучения модели и генерации предсказаний
Я писала названия фильмов на русском языке и вручную проставляла лайк/дизлайк. Моя ИИ-помощница помогала уточнить оригинальные названия на английском, и мы с помощью скрипта выгружали данные по 10 фильмов за итерацию. Так мы сформировали дата сет с полями для обучающих признаков:
Жанры
Награды
Сюжет (Plot)
Метка: нравится / не нравится
Далее мы создали файл onelove.py для обучения модели и вывода предсказаний. Файл содержал следующие части:
Загрузка и преобразование данных, например рейтинг фильма в числовой формат, векторизация поля Plot
Выделение обучающих признаков
Разделение сета на train/test
Обучение модели
Предсказание и интерпретация
Это легковесный математический алгоритм, поэтому обучение модели задается буквально двумя строчками в коде:
# Обучение модели
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
Здесь важно упомянуть, что весь код писала моя ИИ помощница, а я лишь смотрела как он работает, запускала и, если были ошибки [5], обсуждала их с помощницей и мы их исправляли. Я могла что-то поменять в коде, но по мелочи — шрифт или текст для рекомендаций, но основное – это было полностью в компетенции ИИ.
То есть подход такой:
С меня – идея и видение продукта, решение что и как делать, где размещать, как будет выглядеть интерфейс, контроль за всеми файлами и структурой проекта.
С помощницы – весь код и багфикс.
Мы тестировали обученную модель:
Выводили признаки, которые модель считает положительными и отрицательными и смотрели, насколько они соответствуют моим вкусам.
Смотрели, насколько предсказание (понравится фильм или нет) совпадает с моей реальной оценкой.
Модель считала все фильмы с жанром Romance отрицательными, хотя мне они нравятся. Мы удалили этот жанр у всех «дизлайкнутых» фильмов, но поведение [6] модели не изменилось. После анализа мы обнаружили, что в коде стоял путь к старому дата сету, где были в основном драмы. После исправления пути к файлу с актуальным дата сетом модель начала работать правильно. Это был интересный момент, который показал, как важно видеть всю картину проекта и понимать, что и где расположено, а главное — зачем.
После успешного обучения мы сохранили модель и вспомогательные элементы в три файла:
model.pkl — обученная модель
genres.pkl — список жанров и структура признаков
tfidf.pkl — TF-IDF-векторизатор для поля Plot (преобразует текст сюжета в числовые признаки, отражающие важность слов)
После тестирования мы разделили основной файл на два:
model.py — обучение модели (остался локально на моем компьютере)
app.py — веб-приложение с уже обученной моделью
Убедившись, что всё работает локально, мы начали строить веб-интерфейс. С помощью библиотеки Flask мы реализовали полноценный интерфейс в двух файлах:
index.html — структура веб-страницы (поля, кнопки, отображение карточки фильмов)
style.css — оформление (цвета, шрифты, отступы)
Главным файлом, который собрал все компоненты в работающий продукт с веб-интерфейсом, был app.py со следующими компонентами:
Загрузка трёх .pkl-файлов (модель, жанры, векторизатор для сюжета)
Определение функций для:
API-запросов к OMDb (карточка фильма)
API-запросов к ChatGPT (эмоциональные рекомендации)
Предсказания по обученной модели
Использование декораторов @app.route для маршрутов и возврата ответов (буквально связывает URL API-запроса с функцией, которая возвращает ответ)
После того, как веб-интерфейс был построен, мы запустили его на локальной машине, исправили баги (оформление, цвета, расположение кнопок). Затем перенесли работающее приложение и модель на PythonAnyWhere и выложили в публичный доступ. Здесь тоже исправили важный баг — рендеринг интерфейса в мобильных устройствах (responsive view).
OneLove [4] — это интерактивная веб-страница, где пользователь может:
Получить карточку фильма
Узнать, понравится ли ему фильм
Получить рекомендации под настроение
В основе — простая логистическая модель, которую мы построили, обучили, протестировали и развернули полностью самостоятельно — от кода до работающего интерфейса.
Я надеюсь, что мой рассказ мотивирует кого-то сделать первый шаг, ведь ИИ распахнул все двери настежь, стоит и вежливо ждёт, когда мы войдём.
Если у вас есть похожий опыт или проект — поделитесь в комментариях, будет интересно пообщаться.
Автор: Dorial
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/14333
URLs in this post:
[1] опыте: http://www.braintools.ru/article/6952
[2] интеллекта: http://www.braintools.ru/article/7605
[3] обучения: http://www.braintools.ru/article/5125
[4] OneLove: https://lienadreams.pythonanywhere.com/
[5] ошибки: http://www.braintools.ru/article/4192
[6] поведение: http://www.braintools.ru/article/9372
[7] Источник: https://habr.com/ru/articles/901548/?utm_campaign=901548&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.