【阿旭机器学习实战】【18】KMeans聚类中的常见问题

简介: 【阿旭机器学习实战】【18】KMeans聚类中的常见问题

KMeans聚类中的常见问题


使用make_blobs创建样本点


samples,targets = datasets.make_blobs(n_samples=150,n_features=2,centers=3,random_state=1)
plt.scatter(samples[:,0],samples[:,1],c=targets)

00560a31716d49598e11a3be4b1350cc.png

1、K值不合适


km = KMeans(n_clusters=2)
• 1
km.fit(samples)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
    n_clusters=2, n_init=10, n_jobs=1, precompute_distances='auto',
    random_state=None, tol=0.0001, verbose=0)
y_ = km.predict(samples)
• 1
metrics.adjusted_rand_score(targets,y_)
• 1
0.5681159420289855

metrics.silhouette_score(samples,km.labels_)
• 1
0.7802809392385796



一般综合考虑ARI指标和轮廓系数来决定划分几个聚类。


更多优质内容可关注公众号:“阿旭算法与机器学习”,共同学习交流


2、数据偏差较大


samples,target = datasets.make_blobs(n_features=2,n_samples=150,centers=3,random_state=5)
plt.scatter(samples[:,0],samples[:,1],c=target)
• 1
<matplotlib.collections.PathCollection at 0x26d999ec940>

44fae821cc9c488da8e7ef267859cd5d.png


km = KMeans(n_clusters=2)
• 1
y_ = km.fit_predict(samples)
• 1
metrics.adjusted_rand_score(y_,target)


0.5681159420289855
• 1
metrics.silhouette_score(samples,km.labels_)
• 1
0.7744057193895231


对于偏差比较大的数据,可以引入一个修正矩阵来对特征进行修正


trans = np.array([[0.6,-0.6],[-0.4,0.8]])
• 1
sam1 = np.dot(samples,trans)
plt.scatter(sam1[:,0],sam1[:,1],c=target)
• 1
<matplotlib.collections.PathCollection at 0x26d99a47208>

d1075f366f7949819c13351edd7ccb6f.png


km = KMeans(n_clusters=2)
• 1
y_ = km.fit_predict(sam1)
• 1
metrics.adjusted_rand_score(y_,target)
0.5681159420289855
• 1
metrics.silhouette_score(sam1,km.labels_)
• 1
0.8527525114558019



3、各个类别内部数据的标准差差别很大


samples,target= datasets.make_blobs(n_features=2,n_samples=150,centers=3,
                                    cluster_std=[0.5,2,10])
plt.scatter(samples[:,0],samples[:,1],c=target)

cdb8a6f8c66145bcb35a7fd30f83c8a0.png

km = KMeans(n_clusters=3)
• 1
y_ = km.fit_predict(samples)
• 1
plt.scatter(samples[:,0],samples[:,1],c=y_)


91bdbae8b3594499aab4a1534a57d87c.png


metrics.adjusted_rand_score(y_,target)
• 1
0.530328438685834
• 1
metrics.silhouette_score(samples,km.labels_)
• 1
0.5932400629187524



4、样本量差别很大


samples,target = datasets.make_blobs(n_samples=1500,n_features=2,centers=3,random_state=0)
train1 = samples[target==0][:10]
train2 = samples[target==1][:100]
train3 = samples[target==2][:500]
train = np.concatenate([train1,train2,train3])
# 用train作为训练数据
train.shape
• 1
• 2
(610, 2)

# 生成标签
target = [0]*10 + [1]*100 + [2]*500
• 1
• 2
plt.scatter(train[:,0],train[:,1],c=target)


24f3b2556f354250808e07df929e7cc2.png

km = KMeans(n_clusters=3)
• 1
y_ = km.fit_predict(train)
• 1
plt.scatter(train[:,0],train[:,1],c=y_)


95658f3933ba4f469ce6989f8d2bbd7e.png

metrics.adjusted_rand_score(y_,target)
• 1
0.3479149392627809
• 1
metrics.silhouette_score(train,km.labels_)
• 1
0.35994070955867
相关文章
|
5月前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
424 46
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1152 6
|
8月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
8月前
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
505 3
|
8月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
9月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
R1类模型推理能力评测手把手实战
250 2
|
9月前
|
人工智能 自然语言处理 网络安全
基于阿里云 Milvus + DeepSeek + PAI LangStudio 的低成本高精度 RAG 实战
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。
|
9月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
751 2
|
9月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
641 3
|
机器学习/深度学习 人工智能 TensorFlow
基于TensorFlow的深度学习模型训练与优化实战
基于TensorFlow的深度学习模型训练与优化实战
541 3

热门文章

最新文章