最近在看李航所著的《统计学习方法》,很不错的一本书。但在第三章构造平衡kd树时,原书中说的是“以T中所有实例的x(1)坐标的中位数为切分点”(p42),此处的中位数说法自认为不准确。
根据随后给出的
例3.2 给定一个二维空间的数据集:
T={(2,3)T,(5,4)T,(9,6)T,(4,7)T,(8,1)T,(7,2)T}T={(2,3)T,(5,4)T,(9,6)T,(4,7)T,(8,1)T,(7,2)T},构建一个kd平衡树。
我们可以看到,若是取2,5,9,4,8,7的中位数应该是6,但却是根据(7,2)这个点来切分的,随后的递归过程中也是如此,此处让我很困惑。
于是上了维基百科查了一下,原来代码中的中位数的定义为```
median = len(point_list) // 2 # choose median
location=point_list[median]
即列表长度除以2向下取整,2,4,5,7,8,9长度为6,取point_list[3]作为median,由于python索引从0开始,point_list[3]为7,这也可以说明后边的递归过程中为什么选择(4,7)和(9,6)
自认为应将此处的“中位数”说法改成“中值”避免混淆。
本文针对《统计学习方法》一书中平衡kd树构建过程中的“中位数”概念进行了澄清,解释了为何选取特定点作为切分点,并提出了将“中位数”改为“中值”的建议。
1033

被折叠的 条评论
为什么被折叠?



