如何用k means聚类算法优点把一堆点中x比较小,y比较大的点找出来

& 轴对称-最短路线问题知识点 & “阅读材料:(1)对于任意两个数a、b的大...”习题详情
0位同学学习过此题,做题成功率0%
阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方法叫做“求差法”.(2)对于比较两个正数a、b的大小时,我们还可以用它们的平方进行比较:∵a2-b2=(a+b)(a-b),a+b>0∴(a2-b2)与(a-b)的符号相同当a2-b2>0时,a-b>0,得a>b当a2-b2=0时,a-b=0,得a=b当a2-b2<0时,a-b<0,得a<b解决下列实际问题:(1)课堂上,老师让同学们制作几种几何体,张丽同学用了3张A4纸,7张B5纸;李明同学用了2张A4纸,8张B5纸.设每张A4纸的面积为x,每张B5纸的面积为y,且x>y,张丽同学的用纸总面积为W1,李明同学的用纸总面积为W2.回答下列问题:①W1=&(用x、y的式子表示)W2= &(用x、y的式子表示)②请你分析谁用的纸面积最大.(2)如图1所示,要在燃气管道l上修建一个泵站,分别向A、B两镇供气,已知A、B到l的距离分别是3km、4km(即AC=3km,BE=4km),AB=xkm,现设计两种方案:方案一:如图2所示,AP⊥l于点P,泵站修建在点P处,该方案中管道长度a1=AB+AP.方案二:如图3所示,点A′与点A关于l对称,A′B与l相交于点P,泵站修建在点P处,该方案中管道长度a2=AP+BP.①在方案一中,a1= &km(用含x的式子表示);②在方案二中,a2= &&
本题难度:一般
题型:解答题&|&来源:2012-内蒙古赤峰市中考数学试卷
分析与解答
习题“阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方法叫做“求...”的分析与解答如下所示:
(1)①根据题意得出3x+7y和2x+8y,即得出答案;②求出W1-W2=x-y,根据x和y的大小比较即可;(2)①把AB和AP的值代入即可;②过B作BM⊥AC于M,求出AM,根据勾股定理求出BM.再根据勾股定理求出BA′,即可得出答案;③求出=6x-39,分别求出6x-39>0,6x-39=0,6x-39<0,即可得出答案.(1)①W1=3x+7y,W2=2x+8y,故答案为:3x+7y,2x+8y.&&&&&& ②【解析】W1-W2=(3x+7y)-(2x+8y)=x-y,∵x>y,∴x-y>0,∴W1-W2>0,得W1>W2,所以张丽同学用纸的总面积大.&&&(2)①【解析】a1=AB+AP=x+3,故答案为:x+3.&&&&&&&&&&②【解析】过B作BM⊥AC于M,则AM=4-3=1,在△ABM中,由勾股定理得:BM2=AB2-12=x2-1,在△A′MB中,由勾股定理得:AP+BP=A′B==,故答案为:.③【解析】=(x+3)2-()2=x2+6x+9-(x2+48)=6x-39,当>0(即a1-a2>0,a1>a2)时,6x-39>0,解得x>6.5,当=0(即a1-a2=0,a1=a2)时,6x-39=0,解得x=6.5,当<0(即a1-a2<0,a1<a2)时,6x-39<0,解得x<6.5,综上所述当x>6.5时,选择方案二,输气管道较短,当x=6.5时,两种方案一样,当0<x<6.5时,选择方案一,输气管道较短.
找到答案了,赞一个
如发现试题中存在任何错误,请及时纠错告诉我们,谢谢你的支持!
阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方...
错误类型:
习题内容残缺不全
习题有文字标点错误
习题内容结构混乱
习题对应知识点不正确
分析解答残缺不全
分析解答有文字标点错误
分析解答结构混乱
习题类型错误
错误详情:
我的名号(最多30个字):
看完解答,记得给个难度评级哦!
经过分析,习题“阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方法叫做“求...”主要考察你对“轴对称-最短路线问题”
等考点的理解。
因为篇幅有限,只列出部分考点,详细请访问。
轴对称-最短路线问题
1、最短路线问题在直线L上的同侧有两个点A、B,在直线L上有到A、B的距离之和最短的点存在,可以通过轴对称来确定,即作出其中一点关于直线L的对称点,对称点与另一点的连线与直线L的交点就是所要找的点.2、凡是涉及最短距离的问题,一般要考虑线段的性质定理,结合本节所学轴对称变换来解决,多数情况要作点关于某直线的对称点.
与“阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方法叫做“求...”相似的题目:
[2007o山西o模拟]如图,直线l是一条河,P,Q两地相距8千米,P,Q两地到l的距离分别为2千米,5千米,欲在l上的某点M处修建一个水泵站,向P,Q两地供水,现有如下四种铺设方案,图中实线表示铺设的管道,则河水沿着管道,从M到P的路程加上M到Q的路程,最短的是(  )
[2015o乐乐课堂o练习]如图,直线L是一条河,P,Q是两个村庄.欲在L上的某处修建一个水泵站,向P,Q两地供水,现有如下四种铺设方案,图中实线表示铺设的管道,则所需管道最短的是(  )
[2015o乐乐课堂o练习]在直角坐标系中有A,B两点,要在y轴上找一点C,使得它到A,B的距离之和最小,现有如下四种方案,其中正确的是(  )
“阅读材料:(1)对于任意两个数a、b的大...”的最新评论
该知识点好题
1如图,已知点A的坐标为(0,1),点B的坐标为(32,-2),点P在直线y=-x上运动,当|PA-PB|最大时点P的坐标为(  )
2如图四边形ABCD中,AD=DC.∠DAB=∠ACB=90°,过点D作DF⊥AC,垂足为F.DF与AB相交于E.设AB=15,BC=9,P是射线DF上的动点.当△BCP的周长最小时,DP的长为(  )
3如图,∠AOB=30°,内有一点P且OP=√6,若M、N为边OA、OB上两动点,那么△PMN的周长最小为(  )
该知识点易错题
1如图,在边长为1正方形ABCD中,E、F、G分别是AB、BC、CD、DA上的点,3AE=EB,有一只蚂蚁从E点出发,经过F、G、H,最后回点E点,则蚂蚁所走的最小路程是(  )
2代数式√x2+4+√(12-x)2+9的最小值为&&&&.
3阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方法叫做“求差法”.(2)对于比较两个正数a、b的大小时,我们还可以用它们的平方进行比较:∵a2-b2=(a+b)(a-b),a+b>0∴(a2-b2)与(a-b)的符号相同当a2-b2>0时,a-b>0,得a>b当a2-b2=0时,a-b=0,得a=b当a2-b2<0时,a-b<0,得a<b解决下列实际问题:(1)课堂上,老师让同学们制作几种几何体,张丽同学用了3张A4纸,7张B5纸;李明同学用了2张A4纸,8张B5纸.设每张A4纸的面积为x,每张B5纸的面积为y,且x>y,张丽同学的用纸总面积为W1,李明同学的用纸总面积为W2.回答下列问题:①W1=&&&&(用x、y的式子表示)W2=&&&&(用x、y的式子表示)②请你分析谁用的纸面积最大.(2)如图1所示,要在燃气管道l上修建一个泵站,分别向A、B两镇供气,已知A、B到l的距离分别是3km、4km(即AC=3km,BE=4km),AB=xkm,现设计两种方案:方案一:如图2所示,AP⊥l于点P,泵站修建在点P处,该方案中管道长度a1=AB+AP.方案二:如图3所示,点A′与点A关于l对称,A′B与l相交于点P,泵站修建在点P处,该方案中管道长度a2=AP+BP.①在方案一中,a1=&&&&km(用含x的式子表示);②在方案二中,a2=&&&&km(用含x的式子表示);③请你分析要使铺设的输气管道较短,应选择方案一还是方案二.
欢迎来到乐乐题库,查看习题“阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方法叫做“求差法”.(2)对于比较两个正数a、b的大小时,我们还可以用它们的平方进行比较:∵a2-b2=(a+b)(a-b),a+b>0∴(a2-b2)与(a-b)的符号相同当a2-b2>0时,a-b>0,得a>b当a2-b2=0时,a-b=0,得a=b当a2-b2<0时,a-b<0,得a<b解决下列实际问题:(1)课堂上,老师让同学们制作几种几何体,张丽同学用了3张A4纸,7张B5纸;李明同学用了2张A4纸,8张B5纸.设每张A4纸的面积为x,每张B5纸的面积为y,且x>y,张丽同学的用纸总面积为W1,李明同学的用纸总面积为W2.回答下列问题:①W1=____(用x、y的式子表示)W2=____(用x、y的式子表示)②请你分析谁用的纸面积最大.(2)如图1所示,要在燃气管道l上修建一个泵站,分别向A、B两镇供气,已知A、B到l的距离分别是3km、4km(即AC=3km,BE=4km),AB=xkm,现设计两种方案:方案一:如图2所示,AP⊥l于点P,泵站修建在点P处,该方案中管道长度a1=AB+AP.方案二:如图3所示,点A′与点A关于l对称,A′B与l相交于点P,泵站修建在点P处,该方案中管道长度a2=AP+BP.①在方案一中,a1=____km(用含x的式子表示);②在方案二中,a2=____”的答案、考点梳理,并查找与习题“阅读材料:(1)对于任意两个数a、b的大小比较,有下面的方法:当a-b>0时,一定有a>b;当a-b=0时,一定有a=b;当a-b<0时,一定有a<b.反过来也成立.因此,我们把这种比较两个数大小的方法叫做“求差法”.(2)对于比较两个正数a、b的大小时,我们还可以用它们的平方进行比较:∵a2-b2=(a+b)(a-b),a+b>0∴(a2-b2)与(a-b)的符号相同当a2-b2>0时,a-b>0,得a>b当a2-b2=0时,a-b=0,得a=b当a2-b2<0时,a-b<0,得a<b解决下列实际问题:(1)课堂上,老师让同学们制作几种几何体,张丽同学用了3张A4纸,7张B5纸;李明同学用了2张A4纸,8张B5纸.设每张A4纸的面积为x,每张B5纸的面积为y,且x>y,张丽同学的用纸总面积为W1,李明同学的用纸总面积为W2.回答下列问题:①W1=____(用x、y的式子表示)W2=____(用x、y的式子表示)②请你分析谁用的纸面积最大.(2)如图1所示,要在燃气管道l上修建一个泵站,分别向A、B两镇供气,已知A、B到l的距离分别是3km、4km(即AC=3km,BE=4km),AB=xkm,现设计两种方案:方案一:如图2所示,AP⊥l于点P,泵站修建在点P处,该方案中管道长度a1=AB+AP.方案二:如图3所示,点A′与点A关于l对称,A′B与l相交于点P,泵站修建在点P处,该方案中管道长度a2=AP+BP.①在方案一中,a1=____km(用含x的式子表示);②在方案二中,a2=____”相似的习题。(window.slotbydup=window.slotbydup || []).push({
id: '2014386',
container: s,
size: '234,60',
display: 'inlay-fix'
&&|&&3次下载&&|&&总59页&&|
数据挖掘之聚类算法
您的计算机尚未安装Flash,点击安装&
阅读已结束,如需下载到电脑,请使用积分()
下载:20积分
0人评价82页
0人评价39页
2人评价12页
4人评价14页
27人评价92页
所需积分:(友情提示:大部分文档均可免费预览!下载之前请务必先预览阅读,以免误下载造成积分浪费!)
(多个标签用逗号分隔)
文不对题,内容与标题介绍不符
广告内容或内容过于简单
文档乱码或无法正常显示
文档内容侵权
已存在相同文档
不属于经济管理类文档
源文档损坏或加密
若此文档涉嫌侵害了您的权利,请参照说明。
我要评价:
下载:20积分DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,它是一种基于高密度连通区域的、基于密度的聚类算法,能够将具有足够高密度的区域划分为簇,并在具有噪声的数据中发现任意形状的簇。
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,它是一种基于高密度连通区域的、基于密度的聚类算法,能够将具有足够高密度的区域划分为簇,并在具有噪声的数据中发现任意形状的簇。我们总结一下DBSCAN聚类算法原理的基本要点:
我们需要知道的是,DBSCAN算法,需要输入2个参数,这两个参数的计算都来自经验知识。半径Eps的计算依赖于计算k-距离,DBSCAN取k=4,也就是设置MinPts=4,然后需要根据k-距离曲线,根据经验观察找到合适的半径Eps的值,下面的算法实现过程中,我们会详细说明。
对于算法的实现,首先我们概要地描述一下实现的过程:
然后,再详细描述聚类过程的具体实现。
计算欧几里德距离
我们使用的样本数据,来自一组经纬度坐标数据,数据文件格式类似如下所示:
116..87194
116..874577
116..887419
116..853576
116..872999
116..911165
116..061037
116..062485
116..940168
116..062485
116..942057
116..899396
116..898751
116..959335
116..878222
116..962825
116..008559
我们需要做的首先就是,解析样本数据文件,将其转换成我们需要的表示形式,我们定义了Point2D类,代码如下所示:
package org.shirdrn.
public class Point2D {
protected final D
protected final D
public Point2D(Double x, Double y) {
public int hashCode() {
return 31 * x.hashCode() + 31 * y.hashCode();
public boolean equals(Object obj) {
Point2D other = (Point2D)
return this.x.doubleValue() == other.x.doubleValue() && this.y.doubleValue() == other.y.doubleValue();
public Double getX() {
public Double getY() {
public String toString() {
return "(" + x + ", " + y + ")";
我们可以将解析后的点的对象放到一个List&Point2D& allPoints集合里面,以便后续使用时迭代集合。在计算两点之间的欧几里德距离时,需要迭代前面生成的Point2D的集合,计算欧几里德距离,实现方法如下所示:
public static double euclideanDistance(Point2D p1, Point2D p2) {
double sum = 0.0;
double diffX = p1.getX() - p2.getX();
double diffY = p1.getY() - p2.getY();
sum += diffX * diffX + diffY * diffY;
return Math.sqrt(sum);
如果需要,可以将计算的所有点之间的距离缓存,因为计算k-距离需要多次访问点的欧几里德距离,比如,可以使用Guava库中的Cache工具:
Cache&Set&Point2D&, Double& distanceCache =
CacheBuilder.newBuilder().maximumSize(Integer.MAX_VALUE).build();
上面代码中,设置缓存容纳足够多(Integer.MAX_VALUE)的对象,将计算出的全部的欧几里德距离放在内存中,便于后续迭代时重用。
计算k-距离
每个点都要计算k-距离,在计算一个点的k-距离的时候,首先要计算该点到其他所有点的欧几里德距离,按照距离升序排序后,选择第k小的距离作为k-距离的值,实现代码如下所示:
Task task = q.poll();
KPoint2D p1 = (KPoint2D) task.p;
final TreeSet&Double& sortedDistances = Sets.newTreeSet(new Comparator&Double&() {
public int compare(Double o1, Double o2) {
double diff = o1 - o2;
if(diff & 0) {
return -1;
if(diff & 0) {
for (int i = 0; i & allPoints.size(); i++) {
if(task.pos != i) {
KPoint2D p2 = (KPoint2D) allPoints.get(i);
Set&Point2D& set = Sets.newHashSet((Point2D) p1, (Point2D) p2);
Double distance = distanceCache.getIfPresent(set);
if(distance == null) {
distance = MetricUtils.euclideanDistance(p1, p2);
distanceCache.put(set, distance);
if(!sortedDistances.contains(distance)) {
sortedDistances.add(distance);
if(sortedDistances.size() & k) {
Iterator&Double& iter = sortedDistances.iterator();
iter.next();
iter.remove();
p1.kDistance = sortedDistances.iterator().next();
上述代码中,KPoint2D类是Point2D的子类,不过比基类Point2D多了一个k-距离的属性,代码如下所示:
private class KPoint2D extends Point2D {
private Double kDistance = 0.0;
public KPoint2D(Double x, Double y) {
super(x, y);
public int hashCode() {
return super.hashCode();
public boolean equals(Object obj) {
return super.equals(obj);
代码比较容易,可以查看相关注释信息。
绘制k-距离曲线,寻找半径Eps
x轴坐标点我们直接使用递增的自然数序列,每个点对应一个自然数,y轴就是所有点的k-距离的大小,我们在代码中可以进行处理,实现如下:
for(int i=0; i&allPoints.size(); i++) {
KPoint2D kp = (KPoint2D) allPoints.get(i);
System.out.println(i + "\t" + kp.kDistance);
最终生成的数据,输出格式类似如下:
0 6.257E-4
1 8.753E-4
2 8.709E-4
5 0.0047032
6 0.2601679
7 0.2601679
8 0.6968501
9 0.1092647
10 0.3025107
11 0.4491256
12 0.556046
13 0.556046
14 0.4251713
15 0.6228466
我们把输出数据复制到Excel表格中,使用上述数据生成散点图,基于x坐标取了4个不同的范围,观察曲线的变化情况,0~0、、0~2500各个x坐标范围内的点,对应的散点图分别如下所示:
通过上图可以看出:
综合上面4个图,可以选择得到半径Eps的范围大致在0.002~0.006之间,已知MinPts=4,具体我们可以选择下面3个k-距离的值作为半径Eps:
通过下一步进行聚类,看一下使用选择的Eps的这几个值进行聚类的效果对比。另外,对半径Eps=8也进行聚类,主要是为了看一下半径变化对聚类效果的影响。
计算核心点
聚类过程需要知道半径Eps,半径已知,首先需要计算有哪些核心点,给定点,如果以该点为中心半径为Eps的邻域内的其他点的数量大于等于MinPts,则该点就为核心点。计算核心点的实现代码如下所示:
Point2D p1 = taskQueue.poll();
if(p1 != null) {
++processedP
Set&Point2D& set = Sets.newHashSet();
Iterator&Point2D& iter = epsEstimator.allPointIterator();
while(iter.hasNext()) {
Point2D p2 = iter.next();
if(!p2.equals(p1)) {
double distance = epsEstimator.getDistance(Sets.newHashSet(p1, p2));
if(distance &= eps) {
set.add(p2);
if(set.size() &= minPts) {
corePointWithNeighbours.put(p1, set);
LOG.debug("Decide core point: point" + p1 + ", set=" + set);
if(!outliers.contains(p1)) {
outliers.add(p1);
那些被错误放入离群点集合的点,需要在计算核心点完成之后,遍历离群点集合,与核心点集合(及其对应的映射点集合)进行比对,代码如下所示:
Iterator&Point2D& iter = outliers.iterator();
while(iter.hasNext()) {
Point2D np = iter.next();
if(corePointWithNeighbours.containsKey(np)) {
iter.remove();
for(Set&Point2D& set : corePointWithNeighbours.values()) {
if(set.contains(np)) {
iter.remove();
这样,有些非离群点就从离群点集合中被排除了。
连通核心点生成簇
核心点能够连通(有些书籍中称为:“密度可达”),它们构成的以Eps长度为半径的圆形邻域相互连接或重叠,这些连通的核心点及其所处的邻域内的全部点构成一个簇。假设MinPts=4,则连通的核心点示例,如下图所示:
假设MinPts=4,上图中存在两个簇,每个簇都是通过核心点连通在一起的,每个簇是由连通的核心点及其核心点半径Eps圆形邻域内的点组成的,在这两个簇所覆盖的范围外部的点,都是离群点(Outliers)。
计算连通的核心点的思路是,基于广度遍历与深度遍历集合的方式:从核心点集合S中取出一个点p,计算点p与S集合中每个点(除了p点)是否连通,可能会得到一个连通核心点的集合C1,然后从集合S中删除点p和C1集合中的点,得到核心点集合S1;再从S1中取出一个点p1,计算p1与核心点集合S1集中每个点(除了p1点)是否连通,可能得到一个连通核心点集合C2,再从集合S1中删除点p1和C2集合中所有点,得到核心点集合S2,……最后得到p、p1、p2、……,以及C1、C2、……就构成一个簇的核心点。最终将核心点集合S中的点都遍历完成,得到所有的簇。具体代码实现,如下所示:
("Joining connected points ...");
Set&Point2D& corePoints = Sets.newHashSet(corePointWithNeighbours.keySet());
while(true) {
Set&Point2D& set = Sets.newHashSet();
Iterator&Point2D& iter = corePoints.iterator();
if(iter.hasNext()) {
Point2D p = iter.next();
iter.remove();
Set&Point2D& connectedPoints = joinConnectedCorePoints(p, corePoints);
set.addAll(connectedPoints);
while(!connectedPoints.isEmpty()) {
connectedPoints = joinConnectedCorePoints(connectedPoints, corePoints);
set.addAll(connectedPoints);
clusteredPoints.put(p, set);
上面调用了重载的两个方法joinConnectedCorePoints,分别根据参数不同计算连通的核心点集合:计算核心点集合中一个点,与该核心点集合中其它的所有核心点是否连通,调用如下方法:
private Set&Point2D& joinConnectedCorePoints(Point2D p1, Set&Point2D& leftCorePoints) {
Set&Point2D& set = Sets.newHashSet();
for(Point2D p2 : leftCorePoints) {
double distance = epsEstimator.getDistance(Sets.newHashSet(p1, p2));
if(distance &= eps) {
set.add(p2);
leftCorePoints.removeAll(set);
还有一个方法是,上面第一个参数变为一个集合,它调用上面的方法处理每一个点,方法代码实现如下所示:
private Set&Point2D& joinConnectedCorePoints(Set&Point2D& connectedPoints, Set&Point2D& leftCorePoints) {
Set&Point2D& set = Sets.newHashSet();
for(Point2D p1 : connectedPoints) {
set.addAll(joinConnectedCorePoints(p1, leftCorePoints));
最后,集合clusteredPoints存储的就是聚类后的核心点的信息,再根据核心点到其邻域内半径小于等于Eps的点的集合的映射,就能将所有的点生成聚类了。
聚类效果比较
选择不同的半径Eps进行聚类分析, 聚类的结果也不相同,有些情况下差异很大,有些情况差异较小。比如,在MinPts=4的情况下,如何绘制k-距离曲线,已经在前面详细说明了处理过程,我们根据k-距离趋势增长曲线,选择了一组半径Eps的值,执行DBSCAN聚类算法,下面我们比较在MinPts=4和MinPts=8的情况下,再分别选择不同的半径Eps,执行DBSCAN聚类算法生成簇,对分布情况进行对比。
选择半径Eps的值分别为如下3个观察值:
最终得到的聚类效果图在下面可以看到,其中,左侧为没有离群点的情况各个簇的分布情况,右侧是将离群点全部加入到图上显示,图中图例中的9999表示离群点,其他的都是聚类生成的簇,如下图所示:
通过上图可以看出,半径Eps选择的较小时,会产生大量的离群点,其实我们想一下,半径小了,自然落在某个点的邻域内的点减少的可能性就增加了,导致很多点可能就无法成为核心点,自然也就无法成为某个簇的点,而且很生成的簇包含的点的数量都比较少,某些本来很接近的点应该可以成为同一个簇,但是被分裂了。
当半径比较大一些时,生成的一个簇包含了比较多的点,而且这个簇的形状中间可能出现一些“空洞”,因为点之间的距离大一些也能满足成为核心点的要求,所以这些点聚到一簇中可能确实比较合理。
选择半径Eps的值分别为如下3个观察值:
使用我们实现的DBSCAN聚类算法进行分析处理,得到的聚类结果,如下图所示:
因为DBSCAN聚类算法,是基于密度的聚类算法,所以对于密度分别不均,各个簇的密度变化较大时,可能会导致一些问题:比如半径Eps较大时,本来不属于同一个的簇的点被聚到一个簇中;比如半径Eps比较小时,会出现大量比较小的簇(即每个簇中含有的点不较少,但是这些点组成的小簇密度确实很大),同时出现了大量的点不满足成为核心点的要求,MinPts越大越容易出现这种情况。
DBSCAN聚类算法的思想非常明确易懂,虽然需要用户输入2个参数,但是正是输入参数的灵活性,我们可以根据自己实际应用的需要,适当调整参数值,在特定应用场景下进行聚类分析,得到合适的簇划分。通过上面选择不同参数进行聚类的结果对比,如果希望局部比较密集的点都能够生成簇,那么在固定MinPts的值的条件下,半径Eps通过调整变小,可能达到这一需要,产生的簇的数量比较多,但是同时也产生了大量分散的离群点,实际上应该可以进行二次聚类,将离群点也通过合适的方式归到指定的簇中;如果希望生成全局比较大的簇,可以适当调整半径Eps变大,生成的簇的数量较少,离群点的数量也相对较少。
版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至: 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】集合阿里巴巴、阿里云技术干货!历届云栖社区在线峰会技术荟萃专题出炉,赶紧收藏吧~&&
用于实时预测用户对物品偏好,支持企业定制推荐算法,支持A/B Test效果对比
基于全网公开发布数据、传播路径和受众群体画像,利用语义分析、情感算法和机器学习,分析公众对品牌形象、热点事件和公...
大数据开发套件(Data IDE),提供可视化开发界面、离线任务调度运维、快速数据集成、多人协同工作等功能,为您...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
2017杭州云栖大会火热抢票
Loading...

我要回帖

更多关于 k means聚类算法优点 的文章

 

随机推荐