Кластеризация данных на примере метода к-средних

Кластеризация — подзадача Data Mining, которая группирует множество объектов на подмножество таким образом, чтобы объекты одного кластера были максимально похожи друг на друга, а объекты из разных кластеров имели максимальное количество отличных друг от друга критериев. Так в сфере аудита, кластеризация поможет определить выпадение транзакций определенного типа.

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

Написание программы происходило на языке программирования Python и сначала нужно считать данные, которые хранились в формате csv.

import pandas as pd data_file= pd.read_csv('transactions.csv') data_file.head()

Считать файл этого формата можно с помощью библиотеки pandas, а командой head() выведем шапку документа, что бы посмотреть и оценить данные, которые нужно кластеризовать.

Кластеризация данных на примере метода к-средних

В документе хранилась информация об id клиентов, время совершения транзакции, MCC код, тип транзакции, ее сумма, так же id терминала, но его значение везде не определено.

Далее необходимо убрать столбцы с лишней информацией, так как ее оценивание не даст полезной информации для анализа. Команда drop() удаляет лишние столбцы, нам нужно оставить информацию id клиента, MCC код, тип транзакции и ее сумму. Для того, чтобы кластеризовать эти данные, можно воспользоваться методом к-средних, но для начала необходимо записать данные в виде массива и стандартизовать его, чтобы минимальное значение было 0, а максимальное 1.

from sklearn.preprocessing import StandardScaler import numpy as np X=file.values[:,1:] X=np.nan_to_num(X) Clus_dataSet=StandardScaler().fit_transform(X)

Теперь наши данные можно кластеризовать с помощью метода KMeans из библиотеки sklearn.cluster.

from sklearn.cluster import KMeans clasterNum=4 k_maens = KMeans(init="k-means++",n_clusters=clasterNum,n_init=12) k_maens.fit(Clus_dataSet) labels=k_maens.labels_

В массив labels записаны данные о том, к какому кластеру будет принадлежать каждый элемент. Далее необходимо к исходным данным добавить новую колонку (назовем ее Class_kl) и записать информацию из полученного массива. Чтобы посмотреть окончательный результат нужно провести группировку по значениям добавленной колонки. Это можно сделать с помощью команды groupby(). В итоге видим следующий результат.

Кластеризация данных на примере метода к-средних

Делаем вывод, что почти все операции по зачислению схожи друг с другом, а вот операции по списанию средств друг от друга отличаются гораздо больше.

Однако оценить полученный результат проще имея их визуальную интерпретацию это можно сделать с помощью библиотеки matplotlib.pyplot.

Кластеризация данных на примере метода к-средних

На этом графике хорошо видно операции какого типа используются чаще всего, это покупка технических условий, выдача наличных, платежи онлайн, перевод денежных средств, возвраты средств за покупки, переводы через АТМ и POS и списание налогов.

Так же можно заметить, что хорошо видно только 3 кластера из 4 и теперь данные нужно отобразить в трехмерном пространстве с помощью библиотеки mpl_toolkits.mplot3d.

Кластеризация данных на примере метода к-средних

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

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

2
Начать дискуссию