第1关:两点之间距离及相邻条件判断
任务描述
本关任务:编写一个能计算点与点之间距离并判断其是否相邻的算法。 ####相关知识 为了完成本关任务,你需要掌握:1.欧几里得距离公式;2.bool
类型返回值。 #####欧几里得距离公式 聚类分析的关键步骤时判断两点是否相邻,为了简便运算,我们使用欧几里得距离公式作为运算介质。上一实验已经进行了距离公式的编写,这里再回顾一下。
算法代码如下:
return math.sqrt(np.power(a - b, 2).sum())
bool类型返回
经过先前实验,我们已经了解到函数的返回值,这次来编写一个简短的返回bool
类型值的函数。
算法代码如下:
return Distance(a, b) < eps
编程要求
根据提示,在右侧编辑器补充代码,计算并输出距离样本最近的簇中心索引值。 经过上一实训,我们了解了如何计算两点之间的距离,为了简便运算,这里我们选择欧氏距离作为标准。 1)主函数将传聚类中心点的值至子函数; 2)以样本点为中心,计算样本点到各个聚类中心的距离; 3)找出样本距离最短的聚类中心点,并添加至索引号; 4)第一次聚类划分之后,将聚类点的平均值重新作为聚类中心点; 5)重新整个流程,精确聚类结果。
测试说明
平台会对你编写的代码进行测试: 测试输入:
1,2
3,9
2
预期输出:
7.280109889280518
False
测试输入:
1,2
4,6
6
预期输出:
5.0
True
开始你的任务吧,祝你成功!
import numpy as np
import math
def Distance(a, b):
"""
输入:向量A, 向量B
输出:两个向量的欧式距离
"""
# 请在此添加实现代码 #
#********** Begin *********#
return math.sqrt(np.power(a-b,2).sum())
#********** End ***********#
def Eps_Neighbor(a, b, eps):
"""
输入:向量A, 向量B
输出:是否在eps范围内
"""
#********** Begin *********#
return Distance(a,b) < eps
#********** End ***********#
第2关:聚合相邻的点,统计聚类数目
任务描述
本关任务:
- 编写函数来计算在样本
eps
半径范围内的样本点个数; - 编写函数来计算每个类别的样本点数目。
相关知识
为了完成本关任务,你需要掌握:1.查找eps
范围内的样本点的id
;2.利用列表统计样本点个数。
查找eps范围内的样本点的id
在上一小节中,我们已经学会了如何计算两个点之间的欧氏距离,本节我们将通过上一小节的函数计算在每个样本点eps
半径范围内的样本点id
。通过编写Region_Query
函数ÿ