精华内容
下载资源
问答
  • 10)) plt.plot(t+1,S_D,ms=11,lw=4, marker='^',color='b', label='CluBagging模型') plt.xticks(np.arange(len(S_D))+1,np.arange(len(S_D))+1) plt.xlabel("聚类簇数k") plt.ylabel("平均轮廓系数Silhouette") plt...
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import rc
    import matplotlib as mpl
    import matplotlib.font_manager as fm
    myfont=fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc')
    mpl.rcParams['axes.unicode_minus']=False
    plt.rcParams['font.sans-serif'] = 'SimHei'
    rc('mathtext', default='regular')
    
    S_D=[0,0.2525,0.2787,0.3440,0.3731,0.3952,0.3726,0.3332,0.3478,0.3214] 
    
    t = np.arange(len(S_D))
    fig = plt.figure(figsize=(15,10))
    plt.plot(t+1,S_D,ms=11,lw=4, marker='^',color='b',
             label='CluBagging模型')
    plt.xticks(np.arange(len(S_D))+1,np.arange(len(S_D))+1)
    plt.xlabel("聚类簇数k")
    plt.ylabel("平均轮廓系数Silhouette")
    plt.legend(prop=myfont,loc='best') 
    plt.rcParams.update({'font.size': 25})
    
    展开全文
  • # print(kmeans_temp) score = silhouette_score(data_matrix, kmeans_temp) # 得到每个K下的平均轮廓系数 # 获取最佳k值 if score > max_score: # 如果平均轮廓系数更高 max_score = score # 保存更高的系数值 best...

    一、基于K-Means获取最佳K值

    score_list = []
    max_score = -1
    for k in range(2, 6):  # 2,3,4,5
        kmeans_model = KMeans(n_clusters=k)  # 建模
        kmeans_temp = kmeans_model.fit_predict(data_matrix)  # 计算点距离
        # print(kmeans_temp)
        score = silhouette_score(data_matrix, kmeans_temp)  # 得到每个K下的平均轮廓系数
        # 获取最佳k值
        if score > max_score:  # 如果平均轮廓系数更高
            max_score = score  # 保存更高的系数值
            best_k = k  # 保存最佳的k值
            labels_temp = kmeans_temp  # 保存标签数据
        # print(k, score)
        score_list.append([k, score])  # 存每一次的k值和对应的平均轮廓系数
    # print('{:*^60}'.format('所有的k值以及对应平均轮廓系数'))
    print(score_list)
    print('最佳K值:', best_k)
    

    结果

    [[2, 0.3865549293769709], [3, 0.45864450618656805], [4, 0.5020981194788054], [5, 0.48003589664576785]]
    最佳K值: 4
    

    二、聚类结果分析

    • 合并数据与聚类标签
     # 将聚类标签转化为df
    cluster_labels = pd.DataFrame(labels_temp, columns=['clusters']) 
     # 整合原始数据与聚类标签
    merge_data = pd.concat((data, cluster_labels), axis=1) 
    
    • 统计各聚类下的样本量
    cluster_counts = pd.DataFrame(merge_data['渠道代号'].groupby(merge_data['clusters'])
                                  .count()).T.rename({'渠道代号': 'counts'})
    print(cluster_counts)
    

    结果

    clusters    0    1    2   3
    counts    349  313  154  73
    
    • 统计各聚类下的样本占比
    cluster_percents = (cluster_counts / len(data)).round(3).rename({'counts': 'percentage'})
    print(cluster_percents)
    

    结果

    clusters        0      1      2      3
    percentage  0.393  0.352  0.173  0.082
    
    • 查看各聚类的特征
    # 查看各聚类的特征,对数值类型查看均值,对文本类型查看众数
    features = []
    for label in range(best_k):
        label_data = merge_data[merge_data['clusters'] == label]
    
        # 数值类特征的均值
        p1_data = label_data.iloc[:, 1:7]  # 筛选出数值类特征
        p1_des = p1_data.describe().round(3)  # 获取描述性统计信息
        p1_mean = p1_des.iloc[1, :]  # 获取均值数据
    
        # 字符类特征的众数
        p2_data = label_data.iloc[:, 7:12]  # 筛选出字符类特征
        p2_des = p2_data.describe()  # 获取描述性统计信息
        p2_mode = p2_des.iloc[2, :]  # 获取频数最高的标签
    
        # 横向拼接2类不同特征的数据
        merge_line = pd.concat((p1_mean, p2_mode), axis=0)
        # 纵向拼接4类簇的统计数据
        features.append(merge_line)
    # 数据合并与展示
    cluster_pd = pd.DataFrame(features).T
    all_cluster_pd = pd.concat((cluster_counts, cluster_percents, cluster_pd), axis=0)
    print(all_cluster_pd)
    

    结果

                      0        1        2        3
    counts           73      349      313      154
    percentage    0.082    0.393    0.352    0.173
    日均UV        1401.53  300.205  572.521  613.836
    平均注册率         0.001    0.001    0.001    0.003
    平均搜索量         0.033    0.016    0.051     0.02
    访问深度          1.727     2.27    2.145     2.19
    订单转化率         0.002    0.002    0.004    0.003
    投放总时间        15.603    15.35   17.125   15.682
    素材类型            swf      jpg      swf      jpg
    广告类型           tips       横幅      不确定   banner
    合作方式            cpm      cpc      roi      cpc
    广告尺寸        450*300   600*90   600*90  308*388
    广告卖点             打折       直降       打折       满减
    

    K-Means建模分析完成

    数据文件

    展开全文
  • 轮廓系数

    千次阅读 2018-10-22 19:02:37
    轮廓系数如何计算(图像来源于百度) a(i) :i向量到同一簇内其他点不相似程度的平均值 b(i) :i向量到其他簇的平均不相似程度的最小值 通过图可以知道轮廓系数的如何计算 可以用轮廓系数确定样本在聚类结果中的内...

    轮廓系数如何计算(图像来源于百度)
    在这里插入图片描述

    a(i) :i向量到同一簇内其他点不相似程度的平均值
    b(i) :i向量到其他簇的平均不相似程度的最小值

    通过图可以知道轮廓系数的如何计算
    可以用轮廓系数确定样本在聚类结果中的内聚度和分离度

    展开全文
  • 针对不同情况,有些问题你需要的聚类数目可能是已知的。但是在聚类数目不作为一个先验知道的情况下,我们并不能够保证某个聚类的数目对这个数据是最优的,因为...平均轮廓系数为我们提供了一种简单地度量聚类质量...

    针对不同情况,有些问题你需要的聚类数目可能是已知的。但是在聚类数目不作为一个先验知道的情况下,我们并不能够保证某个聚类的数目对这个数据是最优的,因为我们对于数据的结构(如果存在的话)是不清楚的。但是,我们可以通过计算每一个簇中点的轮廓系数来衡量聚类的质量。数据点的轮廓系数衡量了它与分配给他的簇的相似度,这个值范围在-1(不相似)到1(相似)。平均轮廓系数为我们提供了一种简单地度量聚类质量的方法。

    # TODO:在降维后的数据上使用你选择的聚类算法
    from sklearn.cluster import KMeans
    from sklearn.metrics import silhouette_score
    clusterer = KMeans(n_clusters=6, random_state=0).fit(reduced_data)
    # TODO:预测每一个点的簇
    preds =clusterer.predict(reduced_data)
    
    # TODO:找到聚类中心
    centers =clusterer.cluster_centers_
    
    # TODO:预测在每一个转换后的样本点的类
    sample_preds =clusterer.predict(pca_samples)
    
    # TODO:计算选择的类别的平均轮廓系数(mean silhouette coefficient)
    score =silhouette_score(reduced_data,preds)
    print score

     

    转载于:https://www.cnblogs.com/HL-blog/p/9004453.html

    展开全文
  • SSE(sum of the squared errors)是对簇松散度的衡量,作为目标函数其实是一个严格的坐标下降(Coordinate Decendet)过程。SSE不能保证找到全局最优解,...平均轮廓系数的取值范围为[-1,1],系数越大,聚类效果越好。
  • 如果一个簇中的大多数样本具有比较高的轮廓系数,则簇会有较高的总轮廓系数,则整个数据集的平均轮廓系数越高,则聚类是合适的。如果许多样本点具有低轮廓系数甚至负值,则聚类是不合适的,聚类的超参数K可能设定得...
  • 聚类学习-轮廓系数

    万次阅读 2018-01-24 14:30:25
    轮廓系数(silhouette coefficient) 结合了凝聚度和分离度,其计算步骤如下: 对于第 i 个对象,计算它到所属簇中所有其他对象的平均距离,记 ai (体现凝聚度) 对于第 i 个对象和不包含该对象的任意簇,计算...
  • 含义轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式。可见轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优。计算步骤1)对于簇中的每个向量,分别计算它们的轮廓系数。对于...
  • 轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式。 轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优。 计算步骤 1)对于簇中的每个向量,分别计算它们的轮廓系数。 ...
  • a:某个样本与其所在簇内其他样本的平均距离b:某个样本与其他簇样本的平均距离则针对某个样本的轮廓系数s为: 聚类总的轮廓系数SC为:SC= 详细内容参考文献https://pdf.sciencedirectassets.com/271...
  • a:某个样本与其所在簇内其他样本的平均距离b:某个样本与其他簇样本的平均距离则针对某个样本的轮廓系数s为: 聚类总的轮廓系数SC为:SC= 详细内容参考文献https://pdf.sciencedirectassets.com/271...
  • sklearn之聚类评估指标---轮廓系数

    千次阅读 2019-07-21 09:13:00
    ''' 轮廓系数:-----聚类的评估指标 好的聚类:内密外疏,同一个聚类内部的样本要足够密集,不同聚类之间样本要足够... 以及该样本与距离最近的另一个聚类中所有样本的平均距离b,该样本的轮廓系数为(b-a)/ma...
  • 聚类评估算法-轮廓系数

    千次阅读 2018-05-15 21:23:14
    轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式。最早由 Peter J. Rousseeuw 在 1986 提出。它结合内聚度和分离度两种因素。可以用来在相同原始数据的基础上用来评价不同算法、或者算法不同运行...
  • 轮廓系数确定kmeans的K值

    千次阅读 2020-01-06 11:43:51
    轮廓系数确定kmeans的K值 方法: 1,计算样本i到同簇其他样本的平均距离ai。ai 越小,说明样本i越应该被聚类到该簇。将ai 称为样本i的簇内不相似度。 簇C中所有样本的a i 均值称为簇C的簇不相似度。 2,计算样本i到...
  • 聚类 - 3 - 轮廓系数

    万次阅读 2016-07-20 11:45:46
    本总结是是个人为防止遗忘而作,...方法就是轮廓系数(Silhouette)。  Silhouette系数是对聚类结果有效性的解释和验证,由Peter J. Rousseeuw于1986提出。  方法:  1,计算样本i到同簇其他样本的平均距离ai。a
  • 计算它与所在聚类其它样本的平均距离a,以及该样本与距离最近的另一个聚类中所有样本的平均距离b,该样本的轮廓系数为(b-a)/max(a, b),将整个样本空间中所有样本的轮廓系数取算数平均值,作为聚类划分的性能指标s。...
  • 肘部法则和轮廓系数

    千次阅读 2019-09-22 16:04:29
    一、肘部法则–聚类数量选择 肘部法则的计算原理是成本函数...随着值的增大,每个类包含的样本数会减少,于是样本离其重心会更近平均畸变程度会减小。随着值继续增大,平均畸变程度的改善效果会不断减低。值增大过程...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

平均轮廓系数