【阿旭机器学习实战】【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
相关文章
|
3月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
196 6
|
4月前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
108 0
|
6月前
|
机器学习/深度学习 数据采集 算法
【机器学习】K-Means聚类的执行过程?优缺点?有哪些改进的模型?
K-Means聚类的执行过程、优缺点,以及改进模型,包括K-Means++和ISODATA算法,旨在解决传统K-Means算法在确定初始K值、收敛到局部最优和对噪声敏感等问题上的局限性。
90 2
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
582 1
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】Python详细实现基于欧式Euclidean、切比雪夫Chebyshew、曼哈顿Manhattan距离的Kmeans聚类
文章详细实现了基于不同距离度量(欧氏、切比雪夫、曼哈顿)的Kmeans聚类算法,并提供了Python代码,展示了使用曼哈顿距离计算距离矩阵并输出k=3时的聚类结果和轮廓系数评价指标。
123 1
|
8月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
73 0
|
8月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
80 0
|
8月前
|
机器学习/深度学习 算法 搜索推荐
机器学习中的聚类
**文章摘要:** 本文介绍了聚类算法的基本概念、应用、实现流程和评估方法。聚类是一种无监督学习技术,用于将数据分为相似的组,如K-means、层次聚类、DBSCAN和谱聚类。K-means算法通过迭代优化质心,将数据点分配到最近的簇,直至质心不再变化。模型评估包括误差平方和(SSE)、肘部方法(确定最佳簇数)和轮廓系数法(Silhouette Coefficient),以量化聚类的紧密度和分离度。应用场景涵盖用户画像、广告推荐和图像分割等。在Python的sklearn库中,可以使用KMeans API进行聚类操作。
|
8月前
|
机器学习/深度学习 算法 搜索推荐
机器学习聚类算法
聚类算法是无监督学习技术,用于发现数据集中的自然群体,如用户画像、广告推荐等。常见的聚类算法包括K-Means,它基于距离分配样本至簇,适合球形分布;层次聚类则通过合并或分裂形成簇,能发现任意形状的簇;DBSCAN依据密度来聚类,对噪声鲁棒。KMeans API中`sklearn.cluster.KMeans(n_clusters=8)`用于指定簇的数量。评估聚类效果可使用轮廓系数、SSE等指标,Elbow方法帮助选择合适的K值。
|
8月前
|
机器学习/深度学习 算法 数据挖掘
机器学习之聚类——MeanShift算法和图像矢量量化
机器学习之聚类——MeanShift算法和图像矢量量化
79 0

热门文章

最新文章