(3)从直觉的角度透彻理解层次聚类

(3)从直觉的角度透彻理解层次聚类

层次聚类中的树状图工作机制解密

如图41-9所示,问题来了,这样做过之后,接下来怎么进行聚类?这涉及算法内部的机制,在从N个分组变成1个分组之后,使用一个树状图(Dendrograms)的辅助算法决定到底分成多少组。这里有6个点。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 9 分布6个点

如图41-10所示,看哪两个点的距离最近,左边图中的p2,p3的距离最近,p2,p3构成1组,右侧图就把这两个点连在一起。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 10 p2,p3的距离最近

如图41-11所示,接下来看哪两个点的距离最近,左侧图中的p5,p6的距离最近,p5,p6构成1组,右侧图把p5,p6两个点连接起来。连接起来还有一个高度的问题,高度由什么决定的?这是算法的核心,假设绿色的连接线高度是h1,红色连接线的高度是h2,高度是两个集群之间的距离,进行分组的时候根据距离计算的,p2,p3的最短距离就构成连线的高度,p5,p6的距离构成它们的高度。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 11 高度比较

如图41-12所示,接下来哪两个集群点之间的距离最近?这时候,p1与p2,p3的距离最近, 使用连线将它们连接起来。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 12 p1与p2,p3

如图41-13所示,相应的,p4与p5,p6构成了一个集群,也有它们的距离。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 13 连接p4与p5,p6

如图41-14所示,最后是一个大集群,整个数据变成了一个集群,从原先两个构成的集群中构成的。随着集群的合并,距离是越来越大,还是越来越小?距离显然是越来越大。像人一样,从理论上讲,距离越远,越来越疏离,当然远和近看怎么定义。举个不太恰当的例子,感觉和一个人很生疏,就说距离很远;和一个人很亲密,就说明距离很近,走的很近,就更容易分成一组,分成一派,如果很远,偶尔会有所联系,但是各自有自己的圈子。所以,刚才从6个分组变成1个分组,从左侧的图绘制出了右侧的图,到底有没有意义呢?这个非常有意义的,把整个聚类的过程中的距离都记录下来,按照保存下来的数据提出一个标准,这个标准就是多远就进行分组,最后变成一个大的分组,把所有的数据都过滤一遍,看一下数据的距离的情况,是为了实际有效的分组做准备的。假设在上海张江工作,张江是一个区域,然后浦东是一个区域,浦东和浦西都属于上海,属于一个大区域,上海和杭州变成了一个区域,再扩大一点,变成长三角区域,这个是有意义的,到时候分组的时候,按照距离进行划分。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 14形成一个分组

如图41-15所示,从简单来说,现在以距离1.8进行划分,如果距离大于1.8就进行分组,这个时候分成了2组。这里分成了2组,左边是p1,p2,p3,右边是p5,p5,p6。这个可以轻松理解的。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 15分成2组

如图41-16所示,如果标准按照0.8,大于0.8就进行分组,就分成了4组。p1分成1组,p2,p3分成1组,p4分成了1组,p5,p6分成1组。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 16分成4组

如图41-17所示,如果按照0.25的距离就分成了6组,p1,p2,p3,p4,p5,p6各自形成了1组。

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

图41- 17形成6个分组

庆祝段智华的博客访问量突破100万+,欢迎阅读

https://duanzhihua.blog.csdn.net/

www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类
www.zeeklog.com  - (3)从直觉的角度透彻理解层次聚类

本文根据王家林老师《30个真实商业案例代码中成为AI实战专家(10大机器学习案例、13大深度学习案例、7大增强学习案例)课程》整理。

Read more

深入理解 Proxy 和 Object.defineProperty

在JavaScript中,对象是一种核心的数据结构,而对对象的操作也是开发中经常遇到的任务。在这个过程中,我们经常会使用到两个重要的特性:Proxy和Object.defineProperty。这两者都允许我们在对象上进行拦截和自定义操作,但它们在实现方式、应用场景和灵活性等方面存在一些显著的区别。本文将深入比较Proxy和Object.defineProperty,包括它们的基本概念、使用示例以及适用场景,以帮助读者更好地理解和运用这两个特性。 1. Object.defineProperty 1.1 基本概念 Object.defineProperty 是 ECMAScript 5 引入的一个方法,用于直接在对象上定义新属性或修改已有属性。它的基本语法如下: javascript 代码解读复制代码Object.defineProperty(obj, prop, descriptor); 其中,obj是目标对象,prop是要定义或修改的属性名,descriptor是一个描述符对象,用于定义属性的特性。 1.2 使用示例 javascript 代码解读复制代码//

By Ne0inhk

Proxy 和 Object.defineProperty 的区别

Proxy 和 Object.defineProperty 是 JavaScript 中两个不同的特性,它们的作用也不完全相同。 Object.defineProperty 允许你在一个对象上定义一个新属性或者修改一个已有属性。通过这个方法你可以精确地定义属性的特征,比如它是否可写、可枚举、可配置等。该方法的使用场景通常是需要在一个对象上创建一个属性,然后控制这个属性的行为。 Proxy 也可以用来代理一个对象,但是相比于 Object.defineProperty,它提供了更加强大的功能。使用 Proxy 可以截获并重定义对象的基本操作,比如访问属性、赋值、函数调用等等。在这些操作被执行之前,可以通过拦截器函数对这些操作进行拦截和修改。因此,通过 Proxy,你可以完全重写一个对象的默认行为。该方法的使用场景通常是需要对一个对象的行为进行定制化,或者需要在对象上添加额外的功能。 对比 以下是 Proxy 和 Object.defineProperty 的一些区别对比: 方面ProxyObject.defineProperty语法使用 new Proxy(target,

By Ne0inhk