Файл: Допущен к защите Заведующий кафедрой коихи н. А. Сеилова дипломная работа на тему Применение методов кластеризации для анализа данных Специальность 5В070300 Информационные системы.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.12.2023

Просмотров: 90

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

31
Рисунок 3.23 – Критерий Краскела-Уоллиса

32
ЗАКЛЮЧЕНИЕ
В данной работе рассмотрены вопросы изучения методов кластерного анализа для процессов в социально-экономических системах. Кластерный анализ выполнен на примере набора данных о клиентах банка – держателей кредитных карт. По поставленным в работе целям решены следующие задачи:
- проведен обзор существующих алгоритмов кластеризации;
- исследованы алгоритмы метода кластерного анализа;
- выбраны инструментальные средства для проведения кластерного анализа;
- проведено сравнение методов кластеризации;
- метод кластерного анализа применялся при классификации данных о клиентах банка;
- была проведена интерпретация полученных результатов.
Были использованы следующие методы:
- методы многомерного статистического анализа;
- алгоритмы кластерного анализа.
Полученные результаты работы могут быть использованы при сегментации клиентов банка – держателей кредитных карточек.

33
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1 Современные тенденции в кластерном анализе. Бериков В. С., Лбов Г. С.,
2013 г.
2 K-means and K-medoids applet. Mirkes E.M., University of Leicester, 2011.
3 Лекции по алгоритмам кластеризации и многомерного шкалирования.
Воронцов К. В., 2010 г.
4 Python и машинное обучение. Рашка С.,
2015 г.
5 Python и анализ данных. Маккинни У., 2015 г.
6 Изучаем pandas. Хейдт М., 2018 г.
7 Beginning Python Visualization: Crafting Visual Transformation Scripts. Shai
Vaingast, 2009 г.
8 Прикладная математическая статистика. Кобзарь А. И., 2006 г.
9 Основные таблицы математической статистики. Ликеш И., Ляга Й., 1985 г.
10 Use of ranks in one-criterion variance analysis. Kruskal W. H., Wallis W. A.,
1952 г.
11 Pattern Recognition with Fuzzy Objective Function Algoritms. Bezdek J. C.,
1982 г.
12 Кластерный анализ. Мандель И. Д., 1988 г.
13 Применение кластерного анализа в государственном управлении.
Хайдуков Д. С. 2009 г
14 Иерархический кластер-анализ и соответствия. Жамбю М., 1988 г.
15 Hierarchical grouping to optimize an objective function. Ward J.H., 1963 г.
16 A Tutorial on Principal Component Analysis. Jonathon Shlens, 2014 г.

34
ПРИЛОЖЕНИЕ
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns
%matplotlib inline df = pd.read_csv('Credit Card Customer Data.csv') df.head(5) df.tail(5) df.info() data = df.drop(['Sl_No','Customer Key'],axis=1).copy() data.describe().T sns.pairplot(data) sns.heatmap(data.corr(), cmap = "BrBG", annot = True) from sklearn.preprocessing import StandardScaler, MinMaxScaler #
Стандартизация from sklearn.cluster import KMeans # Метод k-средних from sklearn.decomposition import PCA # Метод главных компонентов from sklearn.metrics.pairwise import cosine_similarity
X = data.copy() scaler = StandardScaler()
X = scaler.fit_transform(X)
X.shape clusters = 11 cost = [] for i in range(1,clusters): kmeans = KMeans(n_clusters = i, random_state = 42) kmeans.fit(X) cost.append(kmeans.inertia_) plt.plot(range(1, 11), cost, "b+-")


35 plt.show() k_means = KMeans(n_clusters = 3, random_state = 42) k_means.fit(X) pred_km = k_means.labels_ data_km = pd.concat([data, pd.DataFrame({"cluster":pred_km})], axis=1) data_km.head() pca = PCA() principal_components = pca.fit_transform(X) x, y = principal_components[:,0], principal_components[:,1] print(principal_components.shape) colors = {0:"red",1:"blue",2:"green"} final_df = pd.DataFrame({'x': x, 'y':y, 'label':pred_km}) groups = final_df.groupby(pred_km) fig, ax = plt.subplots(figsize=(15, 10)) for name, group in groups: ax.plot(group.x, group.y, marker='o', line, ms=6, color=colors[name], mec='none') ax.set_aspect('auto') ax.tick_params(axis='x',which='both',bottom='off',top='off',labelbottom='off') ax.tick_params(axis= 'y',which='both',left='off',top='off',labelleft='off') ax.set_title("Сегментация держателей кредитных карт") plt.show() sns.pairplot(data_km, hue='cluster', palette = ["red","blue","green"]) import scipy.cluster.hierarchy as sch plt.figure(figsize=(12,8)) dendrogram = sch.dendrogram(sch.linkage(X, method = 'ward')) plt.title('Дендрограмма') plt.xlabel('Клиенты')

36 plt.ylabel('Евклидовы расстояния') plt.show() from sklearn.cluster import AgglomerativeClustering
#Euclidean distance, and ward linkage (Евклидово расстояние и связь
Уорда) hc = AgglomerativeClustering(n_clusters = 3, affinity = 'euclidean', linkage =
'ward') hc.fit(X) pred_hc = hc.labels_ data_hc = pd.concat([data,pd.DataFrame({"cluster":pred_hc})], axis=1) data_hc.head() pca = PCA() principal_components = pca.fit_transform(X) x, y = principal_components[:,0], principal_components[:,1] print(principal_components.shape) colors = {0:"red",1:"blue",2:"green"} final_df = pd.DataFrame({'x': x, 'y':y, 'label':pred_hc}) groups = final_df.groupby(pred_hc) fig, ax = plt.subplots(figsize=(15, 10)) for name, group in groups: ax.plot(group.x, group.y, marker='o', line, ms=6, color=colors[name], mec='none') ax.set_aspect('auto') ax.tick_params(axis='x',which='both',bottom='off',top='off',labelbottom='off') ax.tick_params(axis= 'y',which='both',left='off',top='off',labelleft='off') ax.set_title("Сегментация держателей кредитных карт") plt.show() sns.pairplot(data_hc, hue='cluster', palette = ["red","blue","green"]) plt.subplots(figsize=(10,5)) sns.boxplot(x = 'cluster', y = 'Avg_Credit_Limit', data = data_km)

37 plt.show() plt.subplots(figsize=(10,5)) sns.boxplot(x = 'cluster', y = 'Total_Credit_Cards', data = data_km) plt.show() plt.subplots(figsize=(10,5)) sns.boxplot(x = 'cluster', y = 'Total_visits_bank', data = data_km) plt.show() plt.subplots(figsize=(10,5)) sns.boxplot(x = 'cluster', y = 'Total_visits_online', data = data_km) plt.show() plt.subplots(figsize=(10,5)) sns.boxplot(x = 'cluster', y = 'Total_calls_made', data = data_km) plt.show()

38

39 31.05.2021

40