【阿旭机器学习实战】【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
相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
24 2
|
7天前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
19 1
|
19天前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
35 5
|
18天前
|
机器学习/深度学习 数据采集 分布式计算
【Python篇】深入机器学习核心:XGBoost 从入门到实战
【Python篇】深入机器学习核心:XGBoost 从入门到实战
49 3
|
19天前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
22 1
|
1天前
|
数据采集 机器学习/深度学习 TensorFlow
声纹识别实战:从数据采集到模型训练
【10月更文挑战第16天】声纹识别技术通过分析个人的语音特征来验证其身份,具有无接触、便捷的特点。本文将带你从零开始,一步步完成声纹识别系统的构建,包括数据采集、音频预处理、特征提取、模型训练及评估等关键步骤。我们将使用Python语言和相关的科学计算库来进行实践。
4 0
|
1月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
87 3
|
1月前
|
机器学习/深度学习 人工智能 算法
利用机器学习预测股市趋势:一个实战案例
【9月更文挑战第5天】在这篇文章中,我们将探索如何使用机器学习技术来预测股市趋势。我们将通过一个简单的Python代码示例来演示如何实现这一目标。请注意,这只是一个入门级的示例,实际应用中可能需要更复杂的模型和更多的数据。
|
1月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
43 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树