评价聚类结果之entropy(熵值)和purity(纯度)

使用k-means算法对数据进行聚类之后,通常需要验证一下聚类的效果。常用的验证方法包括entropy、purity、precious、F-measure、Recall,本文只介绍entropy和purity算法。

Entropy:

对于一个聚类i,首先计算指的是聚类
i 中的成员(member)属于类(class)j 的概率,。其中是在聚类
i 中所有成员的个数,是聚类 i 中的成员属于类 j 的个数。每个聚类的entropy可以表示为,其中L是类(class)的个数。整个聚类划分的entropy为,其中K是聚类(cluster)的数目,m是整个聚类划分所涉及到的成员个数。

Purity:

使用上述Entropy中的定义,我们将聚类 i 的purity定义为。整个聚类划分的purity为,其中K是聚类(cluster)的数目,m是整个聚类划分所涉及到的成员个数。

下表是对取自洛杉矶时报的3204篇文章进行的k-means划分的结果,共分为6个cluster。这些文章取自娱乐、金融等六个类别。理想情况下每个cluster只含有某一特定类别的文章。其中,cluster 3 与体育类别吻合的比较好,所以其entropy很低,purity很高。

entropy和purity的核心代码(Python version)如下:

e_i = [0 for x in range(0,6)]
p_i = [0 for x in range(0,6)]
for i in range(0,cluster_num):
	wr_line_part = ","
	for j in range(0,6):
		wr_line_part += str(M_aggregate[i][j]) + ','
		p_i_j = M_aggregate[i][j]*1.0/m_i[i]  + 0.00000001
		print (p_i_j)
		e_i[i] += 0 - p_i_j*math.log2(p_i_j)
		if (p_i[i] < p_i_j):
			p_i[i] = p_i_j
	print (e_i[i])
	print (p_i[i])

e = 0
p = 0
for i in range(0,6):
	e += m_i[i]/m*e_i[i]
	p += m_i[i]/m*p_i[i]
时间: 2024-10-07 01:55:11

评价聚类结果之entropy(熵值)和purity(纯度)的相关文章

opencv之纹理特征(熵值)的提取

ID3很不错的讲解(matlab程序实现)

1)决策树之ID3 决策树算法是分类算法的一种,基础是ID3算法,C4.5.C5.0都是对ID3的改进.ID3算法的基本思想是,选择信息增益最大的属性作为当前的分类属性. 看Tom M. Mitchell老师的<Machine Learing>第三章中的例子: 我们先解释一下这张表,表中有14条实例数据,就是我们的训练数据,其中 Outlook,Temperature,Humidity ,Wind 称作条件属性,PlayTennis 称作是决策属性(标签). 每一个属性都有各自的值记做:Val

K-均值聚类——电影类型

K-均值聚类 K-均值算法试图将一系列样本分割成K个不同的类簇(其中K是模型的输入参数),其形式化的目标函数称为类簇内的方差和(within cluster sum of squared errors,WCSS).K-均值聚类的目的是最小化所有类簇中的方差之和.标准的K-均值算法初始化K个类中心(为每个类簇中所有样本的平均向量),后面的过程不断重复迭代下面两个步骤.(1) 将样本分到WCSS最小的类簇中.因为方差之和为欧拉距离的平方,所以最后等价于将每个样本分配到欧拉距离最近的类中心.(2) 根

机器学习经典算法详解及Python实现--聚类及K均值、二分K-均值聚类算法

摘要 聚类是一种无监督的学习(无监督学习不依赖预先定义的类或带类标记的训练实例),它将相似的对象归到同一个簇中,它是观察式学习,而非示例式的学习,有点像全自动分类.说白了,聚类(clustering)是完全可以按字面意思来理解的--将相同.相似.相近.相关的对象实例聚成一类的过程.机器学习中常见的聚类算法包括 k-Means算法.期望最大化算法(Expectation Maximization,EM,参考"EM算法原理").谱聚类算法(参考机器学习算法复习-谱聚类)以及人工神经网络算法

kmeans 聚类 k 值优化

kmeans 中k值一直是个令人头疼的问题,这里提出几种优化策略. 手肘法 核心思想 1. 肉眼评价聚类好坏是看每类样本是否紧凑,称之为聚合程度: 2. 类别数越大,样本划分越精细,聚合程度越高,当类别数为样本数时,一个样本一个类,聚合程度最高: 3. 当k小于真实类别数时,随着k的增大,聚合程度显著提高,当k大于真实类别数时,随着k的增大,聚合程度缓慢提升: 4. 大幅提升与缓慢提升的临界是个肘点: 5. 评价聚合程度的数学指标类似 mse,均方差,是每个类别的样本与该类中心的距离平方和比上样

《机器学习实战》之K-均值聚类算法的python实现

<机器学习实战>之K-均值聚类算法的python实现 最近的项目是关于"基于数据挖掘的电路故障分析",项目基本上都是师兄们在做,我只是在研究关于项目中用到的如下几种算法:二分均值聚类.最近邻分类.基于规则的分类器以及支持向量机.基于项目的保密性(其实也没有什么保密的,但是怕以后老板看到我写的这篇博文,所以,你懂的),这里就不介绍"基于数据挖掘的电路故障分析"的思路了. 废话不多说了,开始正题哈. 基本K-均值聚类算法 基本K均值算法的基本思路为:首先选择

模式识别:k-均值聚类的研究与实现

本实验的目的是学习和掌握k-均值聚类算法.k-均值算法是一种经典的无监督聚类和学习算法,它属于迭代优化算法的范畴.本实验在MATLAB平台上,编程实现了k-均值聚类算法,并使用20组三维数据进行测试,比较分类结果.实验中初始聚类中心由人为设定,以便于实验结果的比较与分析. 一.技术论述 1.无监督学习和聚类 在之前设计分类器的时候,通常需要事先对训练样本集的样本进行标定以确定类别归属.这种利用有标记样本集的方法称为"有监督"或"有教师"方法.这一类方法的使用固然十分

机器学习(二)——K-均值聚类(K-means)算法

最近在看<机器学习实战>这本书,因为自己本身很想深入的了解机器学习算法,加之想学python,就在朋友的推荐之下选择了这本书进行学习,在写这篇文章之前对FCM有过一定的了解,所以对K均值算法有一种莫名的亲切感,言归正传,今天我和大家一起来学习K-均值聚类算法. 一 K-均值聚类(K-means)概述 1. 聚类 “类”指的是具有相似性的集合.聚类是指将数据集划分为若干类,使得类内之间的数据最为相似,各类之间的数据相似度差别尽可能大.聚类分析就是以相似性为基础,对数据集进行聚类划分,属于无监督学

多核模糊C均值聚类

摘要: 针对于单一核在处理多数据源和异构数据源方面的不足,多核方法应运而生.本文是将多核方法应用于FCM算法,并对算法做以详细介绍,进而采用MATLAB实现. 在这之前,我们已成功将核方法应用于FCM算法,在很大程度上解决了样本线性不可分的情况.但是这种单一核局限于对数据的某一特征进行有效提取,若一个样本含有多个特征,且遵循不同的核分布,单一核学习就不适用,所以说单一核在处理多数据源以及异构数据源的不足是越发明显. 针对于单一核学习不足,我们可以同时结合多个核函数对数据的多种特征进行同步描述,并