彩票走势图

跨平台图表控件TeeChart应用技术——集群可视化

原创|使用教程|编辑:郑恭琳|2016-05-25 18:03:18.000|阅读 357 次

概述:聚类是根据相关的个别项目自动分组数据的过程。作为一种无监督算法,其广泛应用于数据挖掘、机器学习、B.I.(商业智能)应用程序。下面我将为大家亲试讲解TeeChart如何执行数据“集群”,并使用图表“Tool”组件来选择性地可视化结果。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

TeeChart Pro包括类和组件来执行数据“集群”,并使用图表“Tool”组件来选择性地可视化结果。

聚类是根据相关的个别项目自动分组数据的过程。

作为一种无监督算法,其广泛应用于数据挖掘机器学习B.I.(商业智能)应用程序。

一个可执行的例子:

›› 点击下载完整资源TeeChart_Clustering.zip

聚类算法可以处理自定义数据,而不一定非得是TeeChart“Series”数据。

类和单位

VCL和Firemonkey 的TeeClustering.pas单位包含抽象的“engine”类,执行聚类算法。

这里提供三种不同的聚类方法:

  • TKMeansClustering
  • THierarchicalClustering
  • TQTClustering(质量标准)

这些类都来自一个共同的抽象类:TBaseClustering。

每个聚类方法都有自己的属性,确定如何计算集群。计算之后,您可以访问集群属性,这是TList TCluster对象。

TCluster包含子集群(Items[ ]),所以您可以检查哪些输入的数据项属于集群,或在等级类型的情况下,访问树形结构(集群和子集群)。

上面的类不包含输入的数据(您自己的数据)。

数据通过一个“provider”类传递给聚类引擎。目前有一种数据提供者(TSeriesProvider)集群XY或XYZ系列点。

这个类在TeeClusteringTool.pas单位实现,连同一个图表工具类(TClusteringTool)使操作更容易也更自动化。

基本例子

示例运行时代码(也可以在设计时运行,无需编码):

uses TeeClusteringTool;
var tool : TClusteringTool;
tool:=TClusteringTool.Create(Self);
tool.ParentChart:=Chart1;
tool.Series:=Series1; // your series
tool.Method:=cmKMeans;
tool.KMeans.NumClusters:=5;
tool.Execute;

执行后,您可以在生成的输出集群进行循环,例如:

var t : Integer;
for t:=0 to tool.Clusters.Count-1 do
Memo1.Lines.Add( ‘Cluster: ‘+IntToStr(t)+’ contains:  ‘+
IntToStr(tool.Clusters[t].Count)+’ points’ );

TClusteringTool

该工具使用选择的方法和参数自动执行集群,并可选择性地用不同颜色来描绘每个源系列点,显示他们所属的集群,同时或者在每组集群项目的周边绘制多边形,等等。

属性:

ClusteringTool1.Method := cmHierarchical;
ClusteringTool1.ColorEach := True; // paint Series with one color per cluster
ClusteringTool1.ShowBounds := True; // draws convex polygons bounding each cluster points
ClusteringTool1.Centers.Visible := True; // shows cluster centers
ClusteringTool1.Centroids.Visible := True; // shows cluster centroids

其他属性包括涂刷、画笔和透明度,在绘制集群多边形边界时使用。

方法:

这里提供一些辅助方法:

// Obtain cluster’s center and centroid XY points in Series scales:
var P : TPointFloat;
P:=ClusteringTool1.GetClusterCenter( ClusteringTool1.Clusters[3] );
P:=ClusteringTool1.GetClusterCentroid( ClusteringTool1.Clusters[2] );
// Obtain an array of XY points (in screen pixel coordinates), that belong to cluster:
var PP : TPointArray;
ClusteringTool1.GetClusterPoints( ClusteringTool1.Clusters[4], PP);
…
PP:=nil;
// Get cluster statistics:
var S : TClusterStats;
S:=ClusteringTool1.GetStats( ClusteringTool1.Clusters[0] );

计算参数

每一个聚类算法需要不同的参数:

K-Means:

ClusteringTool1.KMeans.NumClusters := 10; // Number of minimum clusters (“K”)
ClusteringTool1.KMeans.MaxIterations := 1000; // Maximum number of iterations before stopping

Hierarchical:

ClusteringTool1.Hierarchical.NumClusters := 8; // Number of tree root clusters

QT:

ClusteringTool1.QTClustering.MinCount := 30; // Minimum number of points to form a cluster
ClusteringTool1.QTClustering.MaxDiameter := 100; // Maximum “diameter” a cluster can grow

常见的参数

距离

集群计算是基于数据项和其他数据项之间的“距离”。有几种方法来计算项目之间的“距离”。

算法是不可知论者,它们调用Provider(例如:Series provider)来获得距离。

例如,在XY散点图上,点之间的距离可以像是斜边(毕达哥拉斯定理),也就是说,点XY和另一个XY之间的简单的欧几里得距离(欧氏距离)。

距离计算的实现:

  • dmEuclidean
  • dmSquaredEuclidean
  • dmManhattan
  • dmMinkowski
  • dmSorensen
  • dmChebyshev

例子:

ClusteringTool1.Distance := dmMinkowski;
ClusteringTool1.MinkowskiLambda := 4;

链接

当一个或两个集群有一个以上的项目时,有多种方法可以计算集群之间的“距离”。

这就是所谓的“链接”。

最简单的方法是使用每个集群“中心”(这意味着没有发生联系)。

其他链接方式的实现:

lmSingle

也被称为“minimum”。

集群A和B之间的距离是集群A的所有项目和集群B的所有项目之间的最小距离。

lmComplete

也称为“maximum”。

集群A和B之间的距离是集群A的所有项目和集群B的所有项目之间的最大距离。

lmAverage

集群A和B之间的距离是集群A的所有项目和集群B的所有项目之间的平均距离。

lmWard

当添加集群B项目到集群A时,其结果是增加“误差平方和”。

计算速度

集群的本质是一个缓慢的过程。每个聚类方法有不同的性能瓶颈,与输入数据项的数量成正比。

TeeClustering.pas单位大大地调整优化了每个算法的速度,即使很多工作是需要找到更先进的技术,需要更少的CPU周期。

当多个cpu可以一起使用时,QT阈值算法有着并行性的好处。

速度的例子(重新审视):

(Time in milliseconds, Windows 8.1 x64 on Intel i7 4770 @ 3.4Ghz)

IDE XE8 Delphi, Win32, 5000 data points

Algorithm Single CPU Multiple CPU
K-Means 47 31
Hierarchical 4328 4156
QT 2859 703

注释:

x64位可执行文件速度稍快于32位。

速度也非常依赖“距离”的计算方法,用于比较数据。由于其计算了两个数据XY值对之间的斜边,默认的欧几里得计算有一个相当大的CPU成本。

》》》TeeChart最新版官方免费下载地址

》》》


标签:图表图表库图表开发数据分析图表解决方案数据挖掘图表控件teechart

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP