想要數(shù)據(jù)集請點贊關(guān)注收藏后評論區(qū)留言留下QQ郵箱
k-means具體是什么這里就不再贅述,詳情可以參見我這篇博客
k-means
問題描述:銀行對客戶信息進行采集,獲得了200位客戶的數(shù)據(jù),客戶特征包括以下四個1:社保號碼 2:姓名? 3:年齡 4:存款數(shù)量 使用k-means算法對客戶進行分組,生成各類型客戶的特點畫像
肘部折線圖如下? tips:利用肘部方法可以找到最佳的簇數(shù),即看那個點之后逐漸收斂,則那個點為最優(yōu)的簇數(shù)
由下圖可以得知k=3或k=4時比較好
分類出的畫像圖如下,可以清楚的看出不同客戶的畫像
?源碼如下文章來源:http://www.zghlxwxcb.cn/news/detail-514547.html
#-*-coding:utf-8-*-
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib; matplotlib.use('TkAgg')
dataset=pd.read_csv(r'Customer_Info.csv')
print(dataset)
X=dataset.iloc[:,[4,3]].values
from sklearn.cluster import KMeans
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()
數(shù)據(jù)集請點贊關(guān)注收藏后評論區(qū)留下QQ郵箱或者私信博主要文章來源地址http://www.zghlxwxcb.cn/news/detail-514547.html
到了這里,關(guān)于python 實現(xiàn)k-means聚類算法 銀行客戶分組畫像實戰(zhàn)(超詳細,附源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!