您的位置 首页 分类

银行客户分组画像 (k均值聚类)

银行客户分组画像

 

 

一、原理分析

运用k-means方法求解关于银行客户分组画像问题

 

1.k-means算法:

通过把样本分离成n个具有相同方差的类的方式来聚集数据,最小化称为簇内平方和的标准。该算法需要指定簇的数量。

簇的数量可以通过肘部法解决

2.误差平方和:

O4 Y$0N6A(K1RH$]SRNZ`XR

3.肘部法:

(1)对于n个点的数据集,迭代计算k from 1 to n,每次聚类完成后计算每个点到其所属的簇中心的距离的平方和

(2)平方和是会逐渐变小的,直到k==n时平方和为0,因为每个点都是它所在的簇中心本身。

(3)在这个平方和变化过程中,会出现一个拐点也即“肘”点,下降率突然变缓时即认为是最佳的k值。

 

二、实验步骤设计(主要程序的原理)

 

1.先用肘部法确定k值。

2.k-means算法流程:

首先在数据当中随机生成k个聚类中心,后计算数据当中每个样本到这个k个聚类中心的距离,并将对应的样本分到距离最小的聚类中心所对应的簇当中,将所有样本归类之后,对于每个k个簇重新计算每个簇的聚类中心,也就是每个簇中的所有样本的质心,重复上述操作知道聚类中心不发生改变为止。

代码如下:

 

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib; matplotlib.use('TkAgg')
from sklearn.cluster import KMeans
dataset = pd.read_csv(r'Customer_Info.csv')
print(dataset)
X=dataset.iloc[:,[4,3]].values
sumDs=[]
for i in range(1,11):
    kmeans=KMeans(n_clusters=i)
    kmeans.fit(X)
    sumDs.append(kmeans.inertia_)
    print(kmeans.inertia_)
plt.plot(range(1,11),sumDs)
plt.title('the Elbow method')
plt.xlabel('number of cluster k')
plt.ylabel('SSE')
plt.show()
kmenas1=KMeans(n_clusters=3,init='k-means++',max_iter=300,n_init=10,random_state=0)
y_kmeans=kmenas1.fit_predict(X)
plt.scatter(X[y_kmeans==0,0],X[y_kmeans==0,1],s=100,marker='^',c='red',label='poor')
plt.scatter(X[y_kmeans==2,0],X[y_kmeans==2,1],s=100,marker='o',c='green',label='middle')
plt.scatter(X[y_kmeans==1,0],X[y_kmeans==1,1],s=100,marker='*',c='blue',label='rich')
plt.scatter(kmenas1.cluster_centers_[:,0],kmenas1.cluster_centers_[:,1],s=250,c='yellow',label='Centroids')
plt.title('clusters of customer info')
plt.xlabel('deposit')
plt.ylabel('age')
plt.legend()
plt.show()

 

 

三、实验结果

 

9LDD4TC@M9I]S5`GG[KC`7T

k-means算法求得银行客户分组画像如下所示:

 

Q0~}53EG5]I6A6CN`WRJYMH

 

 

相关数据下载:

相关文件下载地址
该资源需登录后下载,去登录?
©本站所有资源均来源于网络,仅供学习使用,请支持正版!
版权声明: 本文作者 天墨香 ;所有文章除特别声明外,均本人自主创作,转载或引用请联系作者,并注明出处(作者、原文链接等)。 链接:https://tmxbk39.com/864.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

邮箱: [email protected]

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部