Архив метки: python

Как переименовать подписи осей к графику Python Plot

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

И тогда простые значения типа “женат”, “в разводе”, “холост”, превращаются в безликие “1”, “2”, “3”.

Для задач обучения моделей машинного интеллекта и последующего прогнозирования это – как раз то, что нужно.

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

Для переименования значений на осях графиков в такой ситуации, можно использовать такие команды:

...
ax = plt.subplot(1,3,j)
ax.set_xticks([0, 1], labels=['остался', 'ушел'])
...
plt.show()
Статья понравилась?

Как вывести на печать матрицу графиков 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
Статья понравилась?

Скоро скоро уж финал…

Сегодня закончил последнюю теоретическую часть в программе обучения Анализ данных на Яндекс.Практикуме.

Эта часть далась мне нелегко. Было очень много непонятных слов и действий.

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

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

Например

Есть фитнес-центр. Администраторы этого предприятия ведут учёт того, как клиенты его посещают.

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

Аналитик данных:

  • проводит подготовку собранной статистики методами pandas на python
  • выбирает методы прогнозирования из библиотеки sklearn
  • обучает компьютер методом scaler.fit
  • выбирает самый точный алгоритм прогнозирования по результату сравнения параметров оценки точности предсказания из sklearn.metrics
  • помогает настроить систему, которая на основе новых данных за месяц, строит прогноз оттока

Администрация:

  • На основе полученного прогноза активно стимулирует клиентов из рисковой группы. Чтобы они не бросали занятия )))

Так решаем главную задачу:

Удержание клиентов

Photo by Clay Banks on Unsplash
Статья понравилась?

Как загружать в Юпитер.Ноутбук файл данных с локального диска Windows

Обучаясь на платформе Яндекс.Практикум, часто сталкивался с тем, что на сайте проводятся работы по улучшению сервиса.

Поэтому проекты стал делать в локальной версии Юпитер.Ноутбука.

У меня ноутбук на Windows.

В блоке чтения файла применяю конструкцию try: exceprt:

Эта конструкция сама выбирает доступный источник данных.

Блок кода для загрузки файла из-под Windows:

import pandas as pd
try:
    data = pd.read_csv('/datasets/real_estate_data.csv', sep='\t') # Yandex path
except:
    # синтаксис указания пути для Windows
    data = pd.read_csv(r"C:\Users\eddyd\Downloads\Praktikum\Datas_Thried_Project\real_estate_data.csv", sep='\t') # personal path

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

Подписка на новости

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

Функция для печати метрик качества машинного моделирования

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

Тоесть всю базу данных с историческими данными делят на две группы (обычно в соотношении 80 – 20).

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

Вот функция для печати метрик качества машинного моделирования:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.metrics import roc_auc_score
# определим функцию, которая будет выводить наши метрики
def print_all_metrics(y_true, y_pred, y_proba, title='Метрики классификации'):
    print(title)
    print('\tAccuracy: {:.2f}'.format(accuracy_score(y_true, y_pred)))
    print('\tPrecision: {:.2f}'.format(precision_score(y_true, y_pred)))
    print('\tRecall: {:.2f}'.format(recall_score(y_true, y_pred)))
    print('\tF1: {:.2f}'.format(f1_score(y_true, y_pred)))
    print('\tROC_AUC: {:.2f}'.format(roc_auc_score(y_true, y_proba)))
Статья понравилась?