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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *