基于轮廓系数来选择n_clusters(Kmeans聚类分析)

 1、导库

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_score
import matplotlib.pyplot as plt
import matplotlib.cm as cm   # colormap
import numpy as np

# 基于我们的轮廓系数来选择最佳的n_clusters
# 想要知道每个聚出来的类的轮廓系数是多少,还想要一个各个类之间的轮廓系数的对比
# 想知道聚类完毕之后图像的分布是什么模样

2、创建数据

# 创建数据,make_blobs的用法可参考之前的一篇博客。
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=500,n_features=2,centers=4,random_state=1)

 3、将函数包装,选取最佳n_clusters

for n_clusters in [2,3,4,5,6,7]:    
    # 先设定我们要分成的蔟数
    n_clusters = n_clusters
    # 创建一个画布,画布上共有一行两列两个图
    fig, (ax1, ax2) = plt.subplots(1, 2)
    # 画布尺寸,两个子图宽度共18,高度为7
    fig.set_size_inches(18, 7)
    # 第一图是我们的轮廓系数图像,是由各个蔟的轮廓系数组成的横向条形图
    # 横向条形图的横坐标是我们的轮廓系数取值,横坐标是我们的每个样本,因为轮廓系数是对每一个样本进行计算的

    # 首先要来设定横坐标
    # 轮廓系数的取值在【-1,1】,但我们至少希望轮廓系数是大于0的
    # 太长的横坐标不利于我们的可视化,所以只设定x的取值范围在[-0.1,1]之间
    ax1.set_xlim([-0.1, 1])   # 设置横坐标
    # 接下来就是设定纵坐标,通常来说,纵坐标是从0开始,最大取值到X.shape[0]的取值
    # 但我们希望,每个蔟都能排在一起,不同的蔟之间有一定的空隙
    # 以便观察不同的条形图聚成的块,理解它对应了哪一个蔟
    # 因此,我们在设
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值