KMeans算法案例

news2025/4/1 16:37:17

KMeans算法案例

案例介绍

已知:客户性别、年龄、年收入、消费指数

需求:对客户进行分析,找到业务突破口,寻找黄金客户

数据集共包含顾客的数据, 数据共有 4 个特征, 数据共有 200 条。接下来,使用聚类算法对具有相似特征的的顾客进行聚类,并可视化聚类结果。

案例实现

确定最佳K值

import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.metrics import silhouette_score
​
# 聚类分析用户分群
dataset = pd.read_csv('data/customers.csv')
dataset.info()
print('dataset-->\n', dataset)
X = dataset.iloc[:, [3, 4]]
print('X-->\n', X)

mysse = []
mysscore = []

# 评估聚类个数
for i in range(2, 11):
    mykeans = KMeans(n_clusters=i)
    mykeans.fit(X)
    mysse.append(mykeans.inertia_)  # inertia 簇内误差平方和
    ret = mykeans.predict(X)
    mysscore.append(silhouette_score(X, ret))  # sc系数 聚类需要1个以上的类别
    
plt.plot(range(2, 11), mysse)
plt.title('the elbow method')
plt.xlabel('number of clusters')
plt.ylabel('mysse')
plt.grid()
plt.show()
plt.title('sh')
plt.plot(range(2, 11), mysscore)
plt.grid(True)
plt.show()

通过肘方法、sh系数都可以看出,聚成5类效果最好

顾客聚类

dataset = pd.read_csv('data/customers.csv')
dataset.head()
#全部行,第四第五列  Annual Income (k$) 和 Spending Score (1-100)
X = dataset.iloc[:, [3, 4]].values  # 返回的是numpy的ndarray
kmeans = KMeans(n_clusters = 5, init = 'k-means++', random_state = 42) #k=5 
y_pred = kmeans.fit_predict(X)

解释:

获取质心坐标

# 获取质心点坐标
centroids = kmeans.cluster_centers_
"""
结果是二维数组
[[25.72727273 79.36363636]
 [87.75       17.58333333]
 [55.0875     49.7125    ]
 [86.53846154 82.12820513]
 [26.30434783 20.91304348]]
"""

获取每簇的点

y_pred == 0
:这是一个布尔索引操作,它会创建一个布尔数组,其中每个元素表示对应的样本是否属于簇0。
例如,如果 y_pred 是 [0, 1, 0, 2, 0],那么 y_pred == 0 的结果将是 [True, False, True, False, True].

X[y_pred == 0, 0]
:这行代码使用布尔索引从数据集 X 中选择所有属于簇0的样本的第一个特征值。
具体来说,它会返回一个一维数组,包含所有被标记为簇0的样本的第一个特征值.

例如,假设 
X 是一个二维数组,形状为 
(n_samples, n_features),其中 n_samples 是样本数量,n_features 是特征数量。如果 
y_pred 是 [0, 1, 0, 2, 0],那么X[y_pred == 0, 0] 将返回一个一维数组,包含X 中索引为0、2和4的样本的第一个特征值.

画图展示聚类结果

# 画图展示聚类结果
plt.scatter(X[y_pred == 0, 0], X[y_pred == 0, 1], s = 100, c = 'red', label = 'Standard')
plt.scatter(X[y_pred == 1, 0], X[y_pred == 1, 1], s = 100, c = 'blue', label = 'Traditional')
plt.scatter(X[y_pred == 2, 0], X[y_pred == 2, 1], s = 100, c = 'green', label = 'Normal')
plt.scatter(X[y_pred == 3, 0], X[y_pred == 3, 1], s = 100, c = 'cyan', label = 'Youth')
plt.scatter(X[y_pred == 4, 0], X[y_pred == 4, 1], s = 100, c = 'magenta', label = 'TA')
# kmeans.cluster_centers_:聚类后每类的中心点
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 300, c = 'black', label = 'Centroids')
plt.title('Clusters of customers')
plt.xlabel('Annual Income (k$)')
plt.ylabel('Spending Score (1-100)')
plt.legend()
plt.show()

从图中可以看出,聚成5类,右上角属于挣的多,消费的也多黄金客户群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2325143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDApro直接 debug STM32 MCU

使用IDA pro 逆向分析muc 固件的时候, 难免要进行一些动态的debug,来进一步搞清楚一些内存的数据、算法等,这时候使用远程debug 的方式直接在mcu上进行debug 最合适不过了。 不过有个前提条件就是一般来说有的mcu 会被运行中的代码屏蔽 RDP、…

六十天前端强化训练之第三十六天之E2E测试(Cypress)大师级完整指南

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、知识讲解 1. E2E测试核心概念 2. Cypress框架特性 3. 工作原理 4. 测试金字塔定位 二、核心代码示例:用户登录全流程测试 三、实现效果展示 四、学习要…

20250330-傅里叶级数专题之离散傅里叶变换(5/6)

5. 傅里叶级数专题之离散傅里叶变换 推荐视频: 工科生以最快的速度理解离散傅立叶变换(DFT) 哔哩哔哩 20250328-傅里叶级数专题之数学基础(0/6)-CSDN博客20250330-傅里叶级数专题之傅里叶级数(1/6)-CSDN博客20250330-傅里叶级数专题之傅里叶变换(2/6)-CSDN博客20250330-傅里叶…

3.29:数据结构-绪论线性表-上

一、时间复杂度 1、ADT 2、定义法计算时间复杂度:统计核心语句的总执行次数 (1)例题1,与2022年的真题对比着写 此题关键在于求和公式的转化,类型为:线性循环嵌套非线性循环 2022年那道题如果考场上实在脑…

大模型架构记录13【hr agent】

一 Function calling 函数调用 from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv())from openai import OpenAI import jsonclient OpenAI()# Example dummy function hard coded to return the same weather # In production, this could be your back…

conda 清除 tarballs 减少磁盘占用 、 conda rename 重命名环境、conda create -n qwen --clone 当前环境

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 conda clean --tarballsconda rename 重命名环境conda create -n qwen --clone …

pycharm相对路径引用方法

用于打字不方便,以下直接手写放图,直观理解

新能源智慧灯杆的智能照明系统如何实现节能?

叁仟新能源智慧灯杆的智能照明系统可通过以下多种方式实现节能: 智能调光控制 光传感器技术:在灯杆上安装光传感器,实时监测周围环境的光照强度。当环境光线充足时,如白天或有其他强光源时,智能照明系统会自动降低路…

Jenkins教程(自动化部署)

Jenkins教程(自动化部署) 1. Jenkins是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行&…

行业智能体大爆发,分布式智能云有解

Manus的一夜爆红,在全球范围内引爆关于AI智能体的讨论。 与过去一般的AI助手不同,智能体(AI Agent)并非只是被动响应,而是主动感知、决策并执行的应用。Gartner预测,到2028年,15%的日常工作决策…

日语Learn,英语再认识(5)

This is a dedicated function — it exists solely to solve this case. This is a dedicated function. It’s a dedicated method for solving this case. 其他备选词(但没dedicated精准): special → 含糊,有时只是“特别”…

【区块链安全 | 第十四篇】类型之值类型(一)

文章目录 值类型布尔值整数运算符取模运算指数运算 定点数地址(Address)类型转换地址的成员balance 和 transfersendcall,delegatecall 和 staticcallcode 和 codehash 合约类型(Contract Types)固定大小字节数组&…

音视频入门基础:MPEG2-TS专题(25)——通过FFmpeg命令使用UDP发送TS流

一、通过FFmpeg命令使用UDP发送TS流 通过以下FFmpeg命令可以将一个mp4文件转换为ts封装,并基于UDP发送(推流): ffmpeg.exe -re -i input.mp4 -vcodec copy -acodec copy -f mpegts udp://127.0.0.1:1234 其中: “in…

Error in torch with streamlit

报错信息: This is the error which is a conflict between torch and streamlit: Examining the path of torch.classes raised: Tried to instantiate class path.path’, but it does not exist! Ensure that it is registered via torch::class Steps to reproduce: py…

网络基础知识介绍

目录 一、计算机网络背景与发展 1.1 计算机网络的背景 ​编辑1.2 计算机网络的发展历程 二、网络协议 2.1 认识网络协议 2.3 协议分层 2.4 OSI七层模型 2.5 TCP/IP 五层(或四层)模型 三、网络传输基本流程 3.1 网络传输流…

MIPS-32架构(寄存器堆,指令系统,运算器)

文章目录 0 Preview:寄存器32通用0 $zero1 $at2—3 \$v0-$v14—7 \$a0-$a38—15 \$t0-$t716—23 \$s0-$s724—25 \$t8-$t926—27 \$k0-$k128 $gp29 $sp30 $fp 指令系统运算存储器 0 Preview: MIPS架构有32位版本和64位版本,本文介绍32位版本 寄存器 正如笔者曾说…

【什么是机器学习——多项式逼近】

什么是机器学习——多项式逼近 机器学习可以分成三大类别,监督学习、非监督学习、强化学习。三大类别背后的数学原理不同。监督学习使用了数学分析中的函数逼近方法和概率统计中的极大似然方法;非监督学习使用聚类和EM算法;强化学习使用马尔可夫决策过程的想法。 机器学习的…

《午夜地铁的幽灵AP》

点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章:末班车的二进制月光****第二章:ESP32的赛博墓志铭****第三章:都市传说与CRC校验****第四章:数字孪生的献祭仪式****终章…

创作领域“<em >彩</em><em>票</em><em>导</em><em>师</em><em>带</em><em>玩</em><em>群

天光揉碎最后一块夜斑,露珠压弯草叶的脆响惊醒了沉睡的巷子。青灰雾霭中,老墙上的爬山虎在打哈欠,卷曲的藤须滴落隔夜的月光。sFsTU

Spring Cloud Gateway中GatewayFilter Factories(网关过滤工厂)的详细介绍

文章目录 1、网关过滤工厂介绍2、 GatewayFilter 过滤器的基本配置3、 Spring Cloud Gateway 内置 GatewayFilter Factories3.1、AddRequestHeader GatewayFilter3.2、AddResponseHeader GatewayFilter3.3、AddRequestParameter GatewayFilter3.4、RewritePath GatewayFilter3.…