zoukankan      html  css  js  c++  java
  • 【聚类评价】Calinski-Harabaz(CH)

    Calinski-Harabaz(CH)

    CH指标通过计算类中各点与类中心的距离平方和来度量类内的紧密度,通过计算各类中心点与数据集中心点距离平方和来度量数据集的分离度,CH指标由分离度与紧密度的比值得到。从而,CH越大代表着类自身越紧密,类与类之间越分散,即更优的聚类结果。

    在scikit-learn中, Calinski-Harabasz Index对应的方法是metrics.calinski_harabaz_score.

    CH和轮廓系数适用于实际类别信息未知的情况,以下以K-means为例,给定聚类数目K,则:

    类内散度为:

    W(K)=∑k=1K∑C(j)=k||xj−x¯¯¯k||2 W(K)=∑k=1K∑C(j)=k||xj−x¯k||2 类间散度:

    B(K)=∑k=1Kak||x¯¯¯k−x¯¯¯||2 B(K)=∑k=1Kak||x¯k−x¯||2 则CH为:

    CH(K)=B(K)(N−K)W(K)(K−1) CH(K)=B(K)(N−K)W(K)(K−1)

    CH相对来说速度可能会更快。

     

    在这里我自己码了一个kmeans的代码,计算并输出其中的ch和轮廓系数

    from sklearn.cluster import KMeans
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    %matplotlib inline
    from sklearn.datasets.samples_generator import make_blobs
    from sklearn.metrics import calinski_harabaz_score
    from sklearn import metrics
    from sklearn import preprocessing
    # X为样本特征,Y为样本簇类别, 共1000个样本,每个样本2个特征,共4个簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分别为[0.4, 0.2, 0.2]
    X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.2, 0.2, 0.2],
                     random_state =9)
    plt.scatter(X[:, 0], X[:, 1], marker='o')
    plt.show()
    #X=np.array([[2,3,6],[8,7,9],[2,8,3],[3,6,1]])


    k=5


    y_pred = KMeans(n_clusters=k, random_state=9).fit_predict(X)
    plt.scatter(X[:, 0], X[:, 1], c=y_pred)
    plt.show()

    c=KMeans(n_clusters=k, random_state=7)
    y_pred = c.fit_predict(X)
    kmeans_model = c.fit(X)
    labels = kmeans_model.labels_
    print('这个是k={}次时的CH值:'.format(k),metrics.calinski_harabaz_score(X,y_pred))
    print('这个是k={}次时的轮廓系数:'.format(k),metrics.silhouette_score(X, labels, metric='euclidean'))

     

  • 相关阅读:
    typedef 函数指针的使用(含例子)
    关于计算机与MCU通信及MAX232、CH340T与PL2303的区别
    CH340电路设计
    USB转串口CH340接线方法
    开漏输出、推挽输出的区别
    STM32位带操作
    STM32启动文件:startup_stm32f10x_hd.s等启动文件的简单描述
    浮点数在内存中的存储方式
    stm32启动地址
    STM32三种启动模式 boot0 boot1
  • 原文地址:https://www.cnblogs.com/xingnie/p/10334572.html
Copyright © 2011-2022 走看看