二维码3-5 数据离散化
离散化:把数值属性的原始值用区间标签或概念标签替换。离散化可以自动产生数据的概念分层,而概念分层允许在多个粒度层进行挖掘。
离散化是指将连续属性的范围分成区间,用来减少给定连续属性值的个数。为什么要离散化?离散化可以使有些分类算法只接受类别属性、可减小数据大小和为进一步分析做准备。离散化分为无监督离散化和监督离散化。下面重点介绍无监督离散化。
无监督离散化在离散过程中不考虑类别属性,其输入数据集仅含有待离散化属性的值。
1.等宽算法(分箱离散化)
根据用户指定的区间数目K,将属性的值域[Xmin,Xmax]划分成K个区间,并使每个区间的宽度相等,即都等于等宽算法的缺点是容易受离群点的影响而使性能不佳。
2.等频算法(直方图分析离散化)
等频算法将范围划分为N个区间,每个区间包含近似相等数量的样本,使之具有较好的数据比例。等频算法根据用户自定义的区间数目,将属性的值域划分成K个小区间。该算法要求落在每个区间的对象数目相等。例如,属性的取值区间内共有M个点,则等频区间所划分的K个小区域内,每个区域含有M/K个点。
3.K均值聚类算法
K均值算法是最普及的聚类算法,也是一种比较简单的聚类算法。首先由用户指定离散化产生的区间数目K,从数据集中随机找出K个数据作为K个初始区间的重心;然后,根据这些重心的欧式距离,对所有的对象聚类:如果数据x距重心Gi最近,则将x划归Gi所代表的那个区间;然后重新计算各区间的重心,并利用新的重心重新聚类所有样本。逐步循环,直到所有区间的重心不再随算法循环而改变为止。(www.xing528.com)
例3_10_DataDiscretization.py
该案例对一个电商交易数据集使用非监督方法进行数据离散化的工作。该数据集是基于一个电商公司真实的交易数据集进行改造的。该电商主要销售的商品是各类礼品,主要客户是来自不同国家的分销商。
载入数据集,选取数据集中的UnitPrice属性来进行数据的非监督离散化。
首先利用等宽法进行离散化,将价格等宽地分为5个区间。可以发现,由于有个别离群点的存在,大量的数据都堆积在第2个区间,这严重损坏了离散化之后建立的数据模型。
执行结果如下:
之后使用等频法进行离散化,由离散结果看出,等频离散不会像等宽离散一样,出现某些区间极多或者极少的情况。但是根据等频离散的原理,为了保证每个区间的数据一致,很有可能将原本相同的两个数值分进了不同的区间。
执行结果如下:
接下来使用K均值聚类算法进行离散化,将k设置为10。然而结果显示,大部分点都聚集在了一个簇中,这说明可能还需要继续调整k的值,或者该方法并不适合这一数据集,大家可以自己尝试去取得最合适的k值。
执行结果如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。