【聚类评价】Calinski-Harabaz(CH)
2024-08-31 17:55:17
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'))
最新文章
- nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题
- South - 在 Django 中 Migrate Database
- BZOJ 3983 Takeover Wars 解题报告
- codeforce 621A 	 Wet Shark and Odd and Even
- javascrip中array使用
- node应用通过multer模块实现文件上传
- 01-vagrant安装centos7
- awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一
- 在 React、Vue项目中使用 SVG
- SAP WM 有无保存WM Level历史库存的Table?
- mssql sqlserver 获取指定日期为本月第几个工作日
- linux用法总结
- Ubuntu 安装 Docker CE
- STL set简单用法
- HDU 3820 Golden Eggs
- C# 泛型使用笔记
- c#之委托事件(DelegateEvent)
- vue-cli中引入jquery的方法
- EasyNVR depends on ffmpeg,yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild
- OA系统是什么,为什么要用OA系统呢?
热门文章
- 1626 - Brackets sequence——[动态规划]
- P1073 奇数还是偶数
- CCPC 2018 吉林 H ";LOVERS"; (线段树)
- js 中日期2013-08-30或2019-08-24 12:30:00 转换成时间戳,和2019-08-29T02:15:08.000+0000转化为2019-08-29T02:15:08
- 2018-9-30-C#-使用外部别名
- codeforces 1165F1/F2 二分好题
- IDEA Maven创建多个Module相互依赖
- Qt、Vc下用fopen打开中文名字的文件(转换成Unicode后,使用_wfopen函数)
- uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件
- TCP/IP|| 建立连接或终止