Архив метки: машинное обучение

Это победа!

Этот уик-энд оказался очень насыщен событиями.

Меня утвердили на роль в мюзикле.

Была читка сценария.

Моя команда “Время играть в ИИ!” участвовала в хакатоне РСВ ЦП ИИ ЦФО Москва.

Мы победили!

Церемония награждения

Я не знаю, как смочь всё это подробно и интересно расписать….

Статья понравилась?
Видео

ИИ клип

Сегодня собран видео клип на песню Бублика “Я сам тебя выдумал” в своём исполнении.

Особенность этого видео в том, что полностью сделано с применением искуственного интеллекта.

Генеративные картинки созданы в Шедеврум.

Адаптированы под мою внешность Кандинским (Версия 2.2)

Собран клип в ИИ – видео редакторе Capcut

Статья понравилась?

Хакатон Хабаровск

На этом уикэнде всероссийский хакатон Цифровой прорыв Искусственный интеллект базируется в Хабаровске.

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

Да. Физически это могут сделать единицы. Особо повезло в этом плане ведущему мероприятия )))

Но даже онлайн участие приносит краски от разных городов.

Вот в Хабаровске все события хакатона будут проходить по местному времени.

А это — 7 часов разницы с московским часовым поясом.

То есть церемония открытия состоится в 9 утра!

А сессии вопрос-ответ могут быть вообще ночью, часа в четыре!

Вот такой интересный поворот.

Кейс

Моей команде досталась задача сделать программу, которая на основе данных медицинских анализов человека, будет определять его “биологический” возраст.

В качестве основы надо применить систему искусственного интеллекта.

Команда

В моей команде изменение.

Данил не смог принимать участие в этот раз — у него началась работа. Он преподаватель.

На его место к нам пришёл чел с удивительным фио. Рохх Вон.

В среду, на созвоне, узнаем, как это. А может быть, это псевдоним.

Метод решения

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

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

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

Фактор неопределённости

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

Вывод

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

Правильный метод

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

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

На какую высоту и длину прыгнуть.

Сколько раз отжаться и подтянуться.

Все эти параметры строго определены для каждой возрастной группы в нормативах ГТО.

Вот это и есть истинная система проверки возраста организма.

Объективная и строго документированная.

Статья понравилась?

Команда в хакатоне НН

Волею судеб, взял на себя капитанство в хакатоне Нижний Новгород.

Первый командный созвон прошёл успешно.
Все были, активно говорили.
Компетенций в команде достаточно.

Продукт сделаем!

А вот наш кейс:

Статья понравилась?

Как вывести на печать матрицу графиков Python

В задаче категоризации методом KMeans огромное количество графиков.
Вот способ вывести их в сетке 4 х Х.
(Количество окошек в строке можете изменять сами ,грамотно заменяя цифру 4 на нужную Вам.

Вывод графиков в сетке я уже не один раз делал.

На в этом задаче машинного обучения это особенно пригодилось.

Вообще, задача категоризации относится к задачам машинного обучения “без учителя”.

Это означает то ,что мы заранее не знаем, какой получится результат.

Сколько и какие категории в выборке данных сформируются.

# импорт библиотек и общие настройки
import pandas as pd
import seaborn as sns
import math
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import itertools

# отключаем некритичные уведомления
import warnings
warnings.filterwarnings('ignore')
# показывать до 40ка колонок
pd.set_option('display.max.columns', 40)
# установка формата вывода на дисплей численных значений
pd.options.display.float_format = '{:,.2f}'.format
# чтение данных
try:
    # Yandex path
    data = pd.read_csv('/datasets/gym_churn.csv')
except:
        # local path !! в кавычках укажите свой путь к файлу !!!
        data = pd.read_csv(r"C:\Users\eddyd\Downloads\Praktikum\Datas_Eleventh_Project\gym_churn.csv")

# убираем колонку с признаком **оттока**
data_clusters = data.drop(columns=['Churn'])
# создаём объект класса scaler (нормализатор)
scaler = StandardScaler()
# обучаем нормализатор и преобразуем набор данных
x_sc = scaler.fit_transform(data_clusters)
# задаём число кластеров, равное 5, и фиксируем значение random_state для воспроизводимости результата
km = KMeans(n_clusters=5, random_state=0) 
labels = km.fit_predict(x_sc) # применяем алгоритм к данным и формируем вектор кластеров
# сохраняем метки кластера в поле нашего датасета
data_clusters['cluster_km'] = labels
# setup size plot
sns.set(rc = {'figure.figsize':(20,5)})
plt.rcParams.update({'font.size': 12})
# список колонок
col_pairs = list(itertools.combinations(data_clusters.drop('cluster_km', axis=1).columns, 2))
# количество графиков
qty_plots = len(col_pairs)
# получим количество строк в сетке, разделив все на 4 c округлением ВВЕРХ
qty_str = math.ceil(qty_plots / 4 )
# строим qty_plots графиков по 4 в ряд 
col=0 # порядковый номер колонки (для графика)
for i in range(qty_str): # строки в матрице графиков
    # проверим, не достигли ли мы окончания списка колонок
    # если col  НЕ больше qty_plots то идём в цикл
    # если больше то выходим
    if col <= (qty_plots-1):
        for j in [1,2, 3, 4]:
             # если col  НЕ больше qty_plots то идём в цикл
             # если больше то выходим
            if col <= (qty_plots-1):
                # определяем колонку
                pair = col_pairs[col]
           
                # первый график в строке
                plt.subplot(1,4,j)
                sns.scatterplot(
                    data_clusters[pair[0]], data_clusters[pair[1]], hue=data_clusters['cluster_km'], palette='Paired'
                );
                plt.title('{} vs {}'.format(pair[0], pair[1]))
                #переход к следующей платформе для следующего графика
                col += 1
                # закрываем цикл построения строки
      
    plt.show()
        # переход к следующей колонке для следующего графика

В результате выполнения этой программе на языке Python получается примерно вот это:

Сетка графиков Python
Статья понравилась?