提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:郑恭琳|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”类,执行聚类算法。
这里提供三种不同的聚类方法:
这些类都来自一个共同的抽象类: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’ );
该工具使用选择的方法和参数自动执行集群,并可选择性地用不同颜色来描绘每个源系列点,显示他们所属的集群,同时或者在每组集群项目的周边绘制多边形,等等。
属性:
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之间的简单的欧几里得距离(欧氏距离)。
距离计算的实现:
例子:
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成本。
》》》
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都控件网本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
交互性强的轻量级ActiveX图表控件,能高效生成多任务仪表板
TeeChart Pro VCL/FMX支持RAD Studio,Delphi和C ++ Builder以及FireMonkey的图表制作工具
TeeChart for Java适用于所有主流Java编程环境的TeeChart图表库
TeeChart for PHP一款含100%的PHP源代码并支持PHP5及更高的版本的图表开发工具
TeeChart for .NET优秀的工业4.0 WinForm图表控件,官方独家授权汉化,集功能全面、性能稳定、价格实惠等优势于一体
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢