机器学习:基于Kmeans聚类算法对银行客户进行分类

news/2024/5/20 5:59:29 标签: 机器学习, 聚类, kmeans, python

在这里插入图片描述

机器学习:基于Kmeans聚类算法对银行客户进行分类

作者:i阿极

作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


大家好,我i阿极。喜欢本专栏的小伙伴,请多多支持

专栏案例:机器学习案例
机器学习(一):线性回归之最小二乘法
机器学习(二):线性回归之梯度下降法
机器学习(三):基于线性回归对波士顿房价预测
机器学习(四):基于KNN算法对鸢尾花类别进行分类预测
机器学习(五):基于KNN模型对高炉发电量进行回归预测分析
机器学习(六):基于高斯贝叶斯对面部皮肤进行预测分析
机器学习(七):基于多项式贝叶斯对蘑菇毒性分类预测分析
机器学习(八):基于PCA对人脸识别数据降维并建立KNN模型检验
机器学习(十四):基于逻辑回归对超市销售活动预测分析
机器学习(十五):基于神经网络对用户评论情感分析预测
机器学习(十六):线性回归分析女性身高与体重之间的关系
机器学习(十七):基于支持向量机(SVM)进行人脸识别预测
机器学习(十八):基于逻辑回归对优惠券使用情况预测分析
机器学习(十九):基于逻辑回归对某银行客户违约预测分析
机器学习(二十):LightGBM算法原理(附案例实战)
机器学习(二十一):基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
机器学习(二十二):基于逻辑回归(Logistic Regression)对股票客户流失预测分析

文章目录

  • 机器学习:基于Kmeans聚类算法对银行客户进行分类
  • 1、Kmeans原理
  • 2、实验环境
  • 3、Kmeans简单代码实现
    • 3.1构造数据
    • 3.2可视化展示
    • 3.3聚类成二分类
    • 3.4获取结果
    • 3.5结果可视化
    • 3.6聚类成3类
    • 3.7结果可视化
  • 4、Kmeans案例实战
    • 4.1案例背景
    • 4.2读取数据
    • 4.2可视化展示
    • 4.3数据建模
    • 4.4建模效果可视化展示


1、Kmeans原理

K-means算法是一种常用的聚类算法,用于将数据集划分成k个不重叠的簇。其主要思想是通过迭代的方式将样本点划分到不同的簇中,使得同一簇内的样本点相似度较高,不同簇之间的相似度较低。
下面我们以一个简单案例对KMeans算法的原理进行解释,该案例目的是将样本点聚成3个类别(K=3)
在这里插入图片描述

下面是K-means算法的详细步骤:

  • 初始化:选择k个初始聚类中心,可以是随机选择或根据某种启发式方法选择。聚类中心通常是从数据集中选取的k个样本点。

  • 分配样本点:对于每个样本点,计算其与各个聚类中心的距离(如欧氏距离),将样本点分配给距离最近的聚类中心所在的簇。

  • 更新聚类中心:对于每个簇,计算其所有样本点的均值,将该均值作为新的聚类中心。

  • 重复步骤2和3,直到聚类中心不再发生变化或达到预定的迭代次数。

  • 输出结果:最终得到k个聚类簇,每个簇包含一组样本点。

K-means算法的特点:

  • K-means算法是一种迭代算法,通过多次迭代来优化聚类结果。
  • K-means算法基于距离度量来进行样本点的分配和聚类中心的更新。
  • K-means算法对离群点敏感,离群点可能会影响聚类结果。
  • K-means算法要求事先指定聚类的个数k。

K-means算法的优化方法:

  • 通过增加迭代次数或设置收敛条件来控制算法的迭代次数。
  • 使用更好的初始化方法,如K-means++算法,可以更好地选择初始聚类中心。
  • 对于离群点的处理,可以使用基于距离的异常值检测方法,或者采用基于密度的聚类算法。

2、实验环境

Python 3.9

Jupyter Notebook

Anaconda

3、Kmeans简单代码实现

3.1构造数据

python">import numpy as np
data = np.array([[3, 2], [4, 1], [3, 6], [4, 7], [3, 9], [6, 8], [6, 6], [7, 7]])

3.2可视化展示

python">import matplotlib.pyplot as plt
plt.scatter(data[:, 0], data[:, 1], c="red", marker='o', label='samples')  # 以红色圆圈样式绘制散点图并加上标签
plt.legend()  # 设置图例,图例内容为上面设置的label参数
plt.show()

在这里插入图片描述

3.3聚类成二分类

python">from sklearn.cluster import KMeans
kms = KMeans(n_clusters=2)
kms.fit(data)

在这里插入图片描述

3.4获取结果

python">label = kms.labels_
print(label)

3.5结果可视化

python">plt.scatter(data[label == 0][:, 0], data[label == 0][:, 1], c="red", marker='o', label='class0')  # 以红色圆圈样式绘制散点图并加上标签
plt.scatter(data[label == 1][:, 0], data[label == 1][:, 1], c="green", marker='*', label='class1')  # 以绿色星星样式绘制散点图并加上标签
plt.legend()  # 设置图例

在这里插入图片描述

3.6聚类成3类

python">kms_3 = KMeans(n_clusters=3)
kms_3.fit(data)
label_3 = kms_3.labels_
print(label_3)

在这里插入图片描述

3.7结果可视化

python">plt.scatter(data[label_3 == 0][:, 0], data[label_3 == 0][:, 1], c="red", marker='o', label='class0')  # 以红色圆圈样式绘制散点图并加上标签
plt.scatter(data[label_3 == 1][:, 0], data[label_3 == 1][:, 1], c="green", marker='*', label='class1')  # 以绿色星星样式绘制散点图并加上标签
plt.scatter(data[label_3 == 2][:, 0], data[label_3 == 2][:, 1], c="blue", marker='+', label='class2')  # 以蓝色加号样式绘制散点图并加上标签
plt.legend()  # 设置图例

在这里插入图片描述

4、Kmeans案例实战

4.1案例背景

银行通常拥有海量的客户,对于不同的客户,银行需要进行不同的营销与工作开展策略,例如对于高收入且风险承受能力强的客户,可以进行重点挖掘业务机会,例如可以给他推销一些收益率高但周期相对较长的理财产品;而对于低收入且风险承受能力较弱的客户,则需要制定不同的营销与工作策略。因此对于银行来说,通常需要将客户进行分群处理,对于不同分群的客户进行不同的处理。

4.2读取数据

python">import pandas as pd 
data = pd.read_excel('客户信息.xlsx')
data.head(10)

在这里插入图片描述

4.2可视化展示

python">import matplotlib.pyplot as plt
plt.scatter(data.iloc[:, 0], data.iloc[:, 1], c="green", marker='*')  # 以绿色星星样式绘制散点图
plt.xlabel('age')  # 添加x轴名称
plt.ylabel('salary')  # 添加y轴名称
plt.show()

在这里插入图片描述

4.3数据建模

python">from sklearn.cluster import KMeans
kms = KMeans(n_clusters=3, random_state=123)
kms.fit(data)
label = kms.labels_
label = kms.fit_predict(data)
print(label)

在这里插入图片描述

4.4建模效果可视化展示

python">plt.scatter(data[label == 0].iloc[:, 0], data[label == 0].iloc[:, 1], c="red", marker='o', label='class0')  # 以红色圆圈样式绘制散点图并加上标签  
plt.scatter(data[label == 1].iloc[:, 0], data[label == 1].iloc[:, 1], c="green", marker='*', label='class1')  # 以绿色星星样式绘制散点图并加上标签 
plt.scatter(data[label == 2].iloc[:, 0], data[label == 2].iloc[:, 1], c="blue", marker='+', label='class2')  # 以蓝色加号样式绘制散点图并加上标签
plt.xlabel('age')  # 添加x轴名称
plt.ylabel('salary')  # 添加y轴名称
plt.legend()  # 设置图例

在这里插入图片描述


📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗


http://www.niftyadmin.cn/n/319645.html

相关文章

MySQL- 索引

索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外, 数据库系统还维护着满足特定查找算法的数据结构, 这些数据结构以某种方式引用数据, 这样就可以在这些数据结构上实现高级查找算法, 这种数据结构就是索引。 索引结构 MySQL的索引是在存储层实现的, 不同的存储引擎有…

Python 列表切片赋值与步长操作:深入探索|NOC Python决赛辅导

你好,我是悦创。 Python 是一种强大且易于学习的编程语言,提供了多种数据结构,如列表(list),用于存储和操作数据。在处理列表时,我们经常使用切片操作,它能让我们有效地获取列表的一…

「SQL面试题库」 No_66 查询近30天活跃用户数

🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试&#xff0…

OpenCV实战(23)——相机标定

OpenCV实战(23)——相机标定 0. 前言1. 数字图像成像原理2. 相机标定2.1 执行相机校准2.2 使用已知相机参数校准2.3 使用圆网格进行校准 3. 完整代码小结系列链接 0. 前言 我们已经了解了相机如何通过在 2D 传感器平面上投射光线来拍摄 3D 场景&#xf…

第三章 介绍Productions - 连接选项

文章目录 第三章 介绍Productions - 连接选项适配器库EmailFileFTPHTTPLDAP托管文件传输 (MFT)MQSeriesPipeSAPSiebelSOAPSQLTCPTelnet 第三章 介绍Productions - 连接选项 IRIS使能够定义与各种技术的入站和出站连接。选项一般分为三类:适配器、专用业务主机类和网…

MATLAB图像处理:图像分割、特征提取和目标识别的应用和优化

MATLAB图像处理:图像分割、特征提取和目标识别的应用和优化 作为一种常用的图像处理工具,MATLAB在图像分割、特征提取和目标识别等方面具有广泛的应用。本文将详细介绍这三个方面的应用和优化。 第一章:图像分割 图像分割是将一幅图像划分成…

FX DocuCentre S2520~~富士施乐 DocuCentre S2520和2022打印机驱动安装

先确定打印机IP 1. 12楼打印机IP 13楼 2楼 192.168.20.251 192.168.20.252 192.168.10.252 2. 下载安装驱动 2520富士施乐 DocuCentre S2520 驱动下载 - 驱动天空 (drvsky.com) 2022富士施乐 DocuCentre SC2022 驱动下载 - 驱动天空 (drvsky.com) 3. 添加驱动配置 安装驱动配…

【Prompting】ChatGPT Prompt Engineering开发指南(2)

ChatGPT Prompt Engineering开发指南2 从产品概况表生成营销产品描述问题1:文本太长问题2: 文本聚焦于错误的细节问题3:描述需要一个尺寸表 加载Python库查看HTML内容来源 在本教程中,学习迭代分析并完善给出的提示,以从结果概况表…