DBSCAN聚类算法详解
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种无监督的ML聚类算法,是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
对比KMeans算法,KMeans算法特别受超参数K的影响,当给定的簇数K与实际情况不符时得到的聚类结果存在较大差异。并且当KMeans算法遍历质心时,在达到稳定性和收敛性之前,离群值(异常值)对质心的移动方式有显著的影响。K-Means只能应用球形簇,如果数据不是球形的,它的准确性就会受到影响。
不同于KMeans算法,DBSCAN不需要指定聚类的簇数,并且不容易受到异常值的影响。DBSCAN算法认为同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。选择一个样本作为起始,将与其紧密相连的样本划为一类,这样就得到了一个聚类类别。然后再从未被分类的样本中选择一个点,将与其紧密相连的样本划为一类,重复此过程直到所有的样本都被划分完毕。
图1. KMeans与DBSCAN聚类效果对比
DBSCAN聚类算法有两个核心参数
- Epsilon (ɛ):邻域的最大半径。如果任意两个样本之间的相互距离小于或等于指定的epsilon,那么它们将是同一类的。
- 核心对象数(minPts):在一个邻域的半径内最少需要包含的样本数,如果一个邻域的半径epsilon内的相邻样本数大于minPts数则被认为是一个簇,否则将被舍弃。(初始点包含在minPts中)。
epsilon和minPts都被用于控制集群分割的大小,更大的epsilon将产生更大的簇(包含更多的数据点),更小的epsilon将构建更小的簇。通常采用较小的epsilon值会有比较好的聚类效果,因为通常只需要很小一部分的数据点在彼此之间的距离内。但epsilon也不能太小,如果太小最终聚类的集群会很小,不具有参考价值。对于minPts值,一个较低的minPts帮助算法建立更多的集群与更多的噪声或离群值。较高的minPts将确保更健壮的集群,但如果集群太大,较小的集群将被合并到较大的集群中。
其他概念
- 密度相连(也叫密度直达)。如果样本y位于样本x的epsilon邻域中,且x是核心对象数大于minPts,此时则称y由x密度直达。注意反之不一定成立,即此时不能说x由y密度直达, 除非且y在epsilon邻域的核心对象数也大于minPts。
- 密度可达。对于样本x,样本y,如果存在样例p1,p2,…,pn,其中,p1=x,pn=y,且序列中每一个样本都与它的前一个样本密度直达,则称样本x与y密度可达。此时序列中的传递样本p1,p2,…,pT−1p1,p2,…,pT−1均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性,这个可以由密度直达的不对称性得出。
- 密度相连。对于样本x和样本y,若存在样本k使得x与k密度可达,且k与y密度可达,则a与b密度相连。
图2. 密度直达,密度可达,密度相连
假设核心数设置为5,左图中,P1到P2密度直达,但是P2到P1不满足密度直达,因为P2的核心数为3不满足最小核心数。同理中间图中,P1到P3密度可达,反之不成立。右图中通过P3作为中转,可实现P1与P5密度相连。
DBSCAN算法流程
假设min_points等于4.
- (1) 选取一个点,以eps为半径,画一个圈,看圈内有几个临近点?如果大于某个阈值min_points, 则认为该点为某一簇的点。如果小于 min_points,则被标记为噪声点,然后处理下一个点。
- (2)将临近点作为种子点seeds = [4,7,9,10]。遍历所有种子点,如果该点被标为噪声点,则重标为聚类点。如果该点没有被标记过,则标记为聚类点。并且以该点为圆心,以eps为半径 画圈,如果圈内点大于min_points,将圈内点,添加到种子点中seeds = [4,7,9,10,1,7,9,16]。
- (3) 重复步骤2,直到遍历完所有的种子点seeds = [4,7,9,10,1,7,9,16]。
- seeds = [4,7,9,10,1,7,9,16]。7的周围有 12, 4 少于 min_points,所以seed 不扩展。
- seeds = [4,7,9,10,1,7,9,16],9的周围1,4,3 ,可以添加。seeds = [4,7,9,10,1,7,9,16,1,4,3]。
- 10的周围,1,6,7,seeds = [4,7,9,10,1,7,9,16,1,4,3,1,6,7]
- … … … … … … … … …
- (4) 标记完一 簇后寻找一个未被标记的点,开始新的一轮聚类.如果找到点5 ,周围点过少标记为 NOISE,找到点15, 周围点过少,标记为NOISE,找到点 19 开始新的一轮聚类。
DBSCAN算法基于python实现
导入相关包
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import DBSCAN
from sklearn import metrics
计算两点之间的距离
# 计算数据点两两之间的距离
def getDistanceMatrix(datas):
N,D = np.shape(datas)
dists = np.zeros([N,N])
for i in range(N):
for j in range(N):
vi = datas[i,:]
vj = datas[j,:]
dists[i,j]= np.sqrt(np.dot((vi-vj),(vi-vj)))
return dists
寻找以点cluster_id 为中心,eps 为半径的圆内的所有点的id
# 寻找以点cluster_id 为中心,eps 为半径的圆内的所有点的id
def find_points_in_eps(point_id,eps,dists):
index = (dists[point_id]<=eps)
return np.where(index==True)[0].tolist()
聚类扩充过程(步骤2)
# 聚类扩展
# dists : 所有数据两两之间的距离 N x N
# labs : 所有数据的标签 labs N,
# cluster_id : 一个簇的标号
# eps : 密度评估半径
# seeds: 用来进行簇扩展的点
# min_points: 半径内最少的点数
def expand_cluster(dists, labs, cluster_id, seeds, eps, min_points):
i = 0
while i< len(seeds):
# 获取一个临近点
Pn = seeds[i]
# 如果该点被标记为NOISE 则重新标记
if labs[Pn] == NOISE:
labs[Pn] = cluster_id
# 如果该点没有被标记过
elif labs[Pn] == UNCLASSIFIED:
# 进行标记,并计算它的临近点 new_seeds
labs[Pn] = cluster_id
new_seeds = find_points_in_eps(Pn,eps,dists)
# 如果 new_seeds 足够长则把它加入到seed 队列中
if len(new_seeds) >=min_points:
seeds = seeds + new_seeds
i = i+1
DBSCAN算法
def dbscan(datas, eps, min_points):
# 计算 所有点之间的距离
dists = getDistanceMatrix(datas)
# 将所有点的标签初始化为UNCLASSIFIED
n_points = datas.shape[0]
labs = [UNCLASSIFIED]*n_points
cluster_id = 0
# 遍历所有点
for point_id in range(0, n_points):
# 如果当前点已经处理过了
if not(labs[point_id] == UNCLASSIFIED):
continue
# 没有处理过则计算临近点
seeds = find_points_in_eps(point_id,eps,dists)
# 如果临近点数量过少则标记为 NOISE
if len(seeds)<min_points:
labs[point_id] = NOISE
else:
# 否则就开启一轮簇的扩张
cluster_id = cluster_id+1
# 标记当前点
labs[point_id] = cluster_id
expand_cluster(dists, labs, cluster_id, seeds,eps, min_points)
return labs, cluster_id
绘图 可视化
# 绘图
def draw_cluster(datas,labs, n_cluster):
plt.cla()
colors = [plt.cm.Spectral(each)
for each in np.linspace(0, 1,n_cluster)]
for i,lab in enumerate(labs):
if lab ==NOISE:
plt.scatter(datas[i,0],datas[i,1],s=16.,color=(0,0,0))
else:
plt.scatter(datas[i,0],datas[i,1],s=16.,color=colors[lab-1])
plt.show()
主函数入口
if __name__== "__main__":
## 数据
file_name = "spiral"
with open(file_name+".txt","r",encoding="utf-8") as f:
lines = f.read().splitlines()
lines = [line.split("\t")[:-1] for line in lines]
datas = np.array(lines).astype(np.float32)
# 数据正则化
datas = StandardScaler().fit_transform(datas)
eps = 0.45
min_points = 5
labs, cluster_id = dbscan(datas, eps=eps, min_points=min_points)
print("labs of my dbscan")
print(labs)
## 使用sklearn的DBSCAN工具包
db = DBSCAN(eps=eps, min_samples=min_points).fit(datas)
skl_labels = db.labels_
print("labs of sk-DBSCAN")
print(skl_labels)
draw_cluster(datas,labs, cluster_id)
聚类效果如下图所示
实验数据如下,可自行copy,注意要修改名字
数据1
31.95 7.95 3
31.15 7.3 3
30.45 6.65 3
29.7 6 3
28.9 5.55 3
28.05 5 3
27.2 4.55 3
26.35 4.15 3
25.4 3.85 3
24.6 3.6 3
23.6 3.3 3
22.75 3.15 3
21.85 3.05 3
20.9 3 3
20 2.9 3
19.1 3 3
18.2 3.2 3
17.3 3.25 3
16.55 3.5 3
15.7 3.7 3
14.85 4.1 3
14.15 4.4 3
13.4 4.75 3
12.7 5.2 3
12.05 5.65 3
11.45 6.15 3
10.9 6.65 3
10.3 7.25 3
9.7 7.85 3
9.35 8.35 3
8.9 9.05 3
8.55 9.65 3
8.15 10.35 3
7.95 10.95 3
7.75 11.7 3
7.55 12.35 3
7.45 13 3
7.35 13.75 3
7.3 14.35 3
7.35 14.95 3
7.35 15.75 3
7.55 16.35 3
7.7 16.95 3
7.8 17.55 3
8.05 18.15 3
8.3 18.75 3
8.65 19.3 3
8.9 19.85 3
9.3 20.3 3
9.65 20.8 3
10.2 21.25 3
10.6 21.65 3
11.1 22.15 3
11.55 22.45 3
11.95 22.7 3
12.55 23 3
13.05 23.2 3
13.45 23.4 3
14 23.55 3
14.55 23.6 3
15.1 23.75 3
15.7 23.75 3
16.15 23.85 3
16.7 23.8 3
17.15 23.75 3
17.75 23.75 3
18.2 23.6 3
18.65 23.5 3
19.1 23.35 3
19.6 23.15 3
20 22.95 3
20.4 22.7 3
20.7 22.55 3
21 22.15 3
21.45 21.95 3
21.75 21.55 3
22 21.25 3
22.25 21 3
22.5 20.7 3
22.65 20.35 3
22.75 20.05 3
22.9 19.65 3
23 19.35 3
23.1 19 3
23.15 18.65 3
23.2 18.25 3
23.2 18.05 3
23.2 17.8 3
23.1 17.45 3
23.05 17.15 3
22.9 16.9 3
22.85 16.6 3
22.7 16.4 3
22.6 16.2 3
22.55 16.05 3
22.4 15.95 3
22.35 15.8 3
22.2 15.65 3
22.15 15.55 3
22 15.4 3
21.9 15.3 3
21.85 15.25 3
21.75 15.15 3
21.65 15.05 3
21.55 15 3
21.5 14.9 3
19.35 31.65 1
20.35 31.45 1
21.35 31.1 1
22.25 30.9 1
23.2 30.45 1
23.95 30.05 1
24.9 29.65 1
25.6 29.05 1
26.35 28.5 1
27.15 27.9 1
27.75 27.35 1
28.3 26.6 1
28.95 25.85 1
29.5 25.15 1
29.95 24.45 1
30.4 23.7 1
30.6 22.9 1
30.9 22.1 1
31.25 21.3 1
31.35 20.55 1
31.5 19.7 1
31.55 18.9 1
31.65 18.15 1
31.6 17.35 1
31.45 16.55 1
31.3 15.8 1
31.15 15.05 1
30.9 14.35 1
30.6 13.65 1
30.3 13 1
29.9 12.3 1
29.5 11.75 1
29 11.15 1
28.5 10.6 1
28 10.1 1
27.55 9.65 1
26.9 9.1 1
26.25 8.8 1
25.7 8.4 1
25.15 8.05 1
24.5 7.75 1
23.9 7.65 1
23.15 7.4 1
22.5 7.3 1
21.9 7.1 1
21.25 7.05 1
20.5 7 1
19.9 6.95 1
19.25 7.05 1
18.75 7.1 1
18.05 7.25 1
17.5 7.35 1
16.9 7.6 1
16.35 7.8 1
15.8 8.05 1
15.4 8.35 1
14.9 8.7 1
14.45 8.9 1
13.95 9.3 1
13.6 9.65 1
13.25 10.1 1
12.95 10.55 1
12.65 10.9 1
12.35 11.4 1
12.2 11.75 1
11.95 12.2 1
11.8 12.65 1
11.75 13.05 1
11.55 13.6 1
11.55 14 1
11.55 14.35 1
11.55 14.7 1
11.6 15.25 1
11.65 15.7 1
11.8 16.05 1
11.85 16.5 1
12 16.75 1
12.15 17.2 1
12.3 17.6 1
12.55 17.85 1
12.8 18.05 1
13.1 18.4 1
13.3 18.6 1
13.55 18.85 1
13.8 19.05 1
14.15 19.25 1
14.45 19.5 1
14.85 19.55 1
15 19.7 1
15.25 19.7 1
15.55 19.85 1
15.95 19.9 1
16.2 19.9 1
16.55 19.9 1
16.85 19.9 1
17.2 19.9 1
17.4 19.8 1
17.65 19.75 1
17.8 19.7 1
18 19.6 1
18.2 19.55 1
3.9 9.6 2
3.55 10.65 2
3.35 11.4 2
3.1 12.35 2
3.1 13.25 2
3.05 14.15 2
3 15.1 2
3.1 16 2
3.2 16.85 2
3.45 17.75 2
3.7 18.7 2
3.95 19.55 2
4.35 20.25 2
4.7 21.1 2
5.15 21.8 2
5.6 22.5 2
6.2 23.3 2
6.8 23.85 2
7.35 24.45 2
8.05 24.95 2
8.8 25.45 2
9.5 26 2
10.2 26.35 2
10.9 26.75 2
11.7 27 2
12.45 27.25 2
13.3 27.6 2
14.05 27.6 2
14.7 27.75 2
15.55 27.75 2
16.4 27.75 2
17.1 27.75 2
17.9 27.75 2
18.55 27.7 2
19.35 27.6 2
20.1 27.35 2
20.7 27.1 2
21.45 26.8 2
22.05 26.5 2
22.7 26.15 2
23.35 25.65 2
23.8 25.3 2
24.3 24.85 2
24.75 24.35 2
25.25 23.95 2
25.65 23.45 2
26.05 23 2
26.2 22.3 2
26.6 21.8 2
26.75 21.25 2
27 20.7 2
27.15 20.15 2
27.15 19.6 2
27.35 19.1 2
27.35 18.45 2
27.4 18 2
27.3 17.4 2
27.15 16.9 2
27 16.4 2
27 15.9 2
26.75 15.35 2
26.55 14.85 2
26.3 14.45 2
25.95 14.1 2
25.75 13.7 2
25.35 13.3 2
25.05 12.95 2
24.8 12.7 2
24.4 12.45 2
24.05 12.2 2
23.55 11.85 2
23.2 11.65 2
22.75 11.4 2
22.3 11.3 2
21.9 11.1 2
21.45 11.05 2
21.1 11 2
20.7 10.95 2
20.35 10.95 2
19.95 11 2
19.55 11 2
19.15 11.05 2
18.85 11.1 2
18.45 11.25 2
18.15 11.35 2
17.85 11.5 2
17.5 11.7 2
17.2 11.95 2
17 12.05 2
16.75 12.2 2
16.65 12.35 2
16.5 12.5 2
16.35 12.7 2
16.2 12.8 2
16.15 12.95 2
16 13.1 2
15.95 13.25 2
15.9 13.4 2
15.8 13.5 2
15.8 13.65 2
15.75 13.85 2
15.65 14.05 2
15.65 14.25 2
15.65 14.5 2
15.65 14.6 2
数据2
1.85 27.8 1
1.35 26.65 1
1.4 23.25 2
0.85 23.05 2
0.5 22.35 2
0.65 21.35 2
1.1 22.05 2
1.35 22.65 2
1.95 22.8 2
2.4 22.45 2
1.8 22 2
2.5 21.85 2
2.95 21.4 2
1.9 21.25 2
1.35 21.45 2
1.35 20.9 2
1.25 20.35 2
1.75 20.05 2
2 20.6 2
2.5 21 2
1.7 19.05 2
2.4 20.05 2
3.05 20.45 2
3.7 20.45 2
3.45 19.9 2
2.95 19.5 2
2.4 19.4 2
2.4 18.25 2
2.85 18.75 2
3.25 19.05 2
3.95 19.6 2
2.7 17.8 2
3.45 18.05 2
3.8 18.55 2
4 19.1 2
4.45 19.9 2
4.65 19.15 2
4.85 18.45 2
4.3 18.05 2
3.35 17.3 2
3.7 16.3 2
4.4 16.95 2
4.25 17.4 2
4.8 17.65 2
5.25 18.25 2
5.75 18.55 2
5.3 19.25 2
6.05 19.55 2
6.5 18.9 2
6.05 18.2 2
5.6 17.8 2
5.45 17.15 2
5.05 16.55 2
4.55 16.05 2
4.95 15.45 2
5.85 14.8 2
5.6 15.3 2
5.65 16 2
5.95 16.8 2
6.25 16.4 2
6.1 17.45 2
6.6 17.65 2
6.65 18.3 2
7.3 18.35 2
7.85 18.3 2
7.15 17.8 2
7.6 17.7 2
6.7 17.25 2
7.3 17.25 2
6.7 16.8 2
7.3 16.65 2
6.75 16.3 2
7.4 16.2 2
6.55 15.75 2
7.35 15.8 2
6.8 14.95 2
7.45 15.1 2
6.85 14.45 2
7.6 14.6 2
8.55 14.65 2
8.2 15.5 2
7.9 16.1 2
8.05 16.5 2
7.8 17 2
8 17.45 2
8.4 18.1 2
8.65 17.75 2
8.9 17.1 2
8.4 17.1 2
8.65 16.65 2
8.45 16.05 2
8.85 15.35 2
9.6 15.3 2
9.15 16 2
10.2 16 2
9.5 16.65 2
10.75 16.6 2
10.45 17.2 2
9.85 17.1 2
9.4 17.6 2
10.15 17.7 2
9.85 18.15 2
9.05 18.25 2
9.3 18.7 2
9.15 19.15 2
8.5 18.8 2
11.65 17.45 2
11.1 17.65 2
10.4 18.25 2
10 18.95 2
11.95 18.25 2
11.25 18.4 2
10.6 18.9 2
11.15 19 2
11.9 18.85 2
12.6 18.9 2
11.8 19.45 2
11.05 19.45 2
10.3 19.4 2
9.9 19.75 2
10.45 20 2
13.05 19.9 2
12.5 19.75 2
11.9 20.05 2
11.2 20.25 2
10.85 20.85 2
11.4 21.25 2
11.7 20.6 2
12.3 20.45 2
12.95 20.55 2
12.55 20.95 2
12.05 21.25 2
11.75 22.1 2
12.25 21.85 2
12.8 21.5 2
13.55 21 2
13.6 21.6 2
12.95 22 2
12.5 22.25 2
12.2 22.85 2
12.7 23.35 2
13 22.7 2
13.55 22.2 2
14.05 22.25 2
14.2 23.05 2
14.1 23.6 2
13.5 22.8 2
13.35 23.5 2
13.3 24 2
7.3 19.15 2
7.95 19.35 2
7.7 20.05 2
6.75 19.9 2
5.25 20.35 2
6.15 20.7 1
7 20.7 1
7.6 21.2 1
8.55 20.6 1
9.35 20.5 1
8.3 21.45 1
7.9 21.6 1
7.15 21.75 1
6.7 21.3 1
5.2 21.1 2
6.2 21.95 1
6.75 22.4 1
6.15 22.5 1
5.65 22.2 1
4.65 22.55 1
4.1 23.45 1
5.35 22.8 1
7.4 22.6 1
7.75 22.1 1
8.5 22.3 1
9.3 22 1
9.7 22.95 1
8.8 22.95 1
8.05 22.9 1
7.6 23.15 1
6.85 23 1
6.2 23.25 1
5.7 23.4 1
5.1 23.55 1
4.55 24.15 1
5.5 24 1
6.1 24.05 1
6.5 23.6 1
6.75 23.95 1
7.3 23.75 1
8.3 23.4 1
8.9 23.7 1
9.55 23.65 1
10.35 24.1 1
7.95 24.05 1
3.95 24.4 1
3.75 25.25 1
3.9 25.95 1
4.55 26.65 1
5.25 26.75 1
6.5 27.6 1
7.45 27.6 1
8.35 27.35 1
9.25 27.2 1
9.95 26.5 1
10.55 25.6 1
9.9 24.95 1
9.2 24.5 1
8.55 24.2 1
8.8 24.8 1
9.2 25.35 1
9.55 26.05 1
9.05 26.6 1
8.8 25.8 1
8.15 26.35 1
8.05 25.8 1
8.35 25.2 1
7.9 25.3 1
8.05 24.7 1
7.3 24.4 1
7.55 24.85 1
6.85 24.45 1
6.25 24.65 1
5.55 24.5 1
4.65 25.1 1
5 25.55 1
5.55 26.1 1
5.55 25.25 1
6.2 25.2 1
6.8 25.05 1
7.4 25.25 1
6.65 25.45 1
6.15 25.8 1
6.5 26.1 1
6.6 26.6 1
7.7 26.65 1
7.5 26.2 1
7.5 25.65 1
7.05 25.85 1
6.9 27.15 1
6.15 26.9 1
数据3
15.55 28.65 2
14.9 27.55 2
14.45 28.35 2
14.15 28.8 2
13.75 28.05 2
13.35 28.45 2
13 29.15 2
13.45 27.5 2
13.6 26.5 2
12.8 27.35 2
12.4 27.85 2
12.3 28.4 2
12.2 28.65 2
13.4 25.1 2
12.95 25.95 2
12.9 26.5 2
11.85 27 2
11.35 28 2
11.15 28.7 2
11.25 27.4 2
10.75 27.7 2
10.5 28.35 2
9.65 28.45 2
10.25 27.25 2
10.75 26.55 2
11.7 26.35 2
11.6 25.9 2
11.9 25.05 2
12.6 24.05 2
11.9 24.5 2
11.1 25.2 2
10.55 25.15 2
10.05 25.95 2
9.35 26.6 2
9.3 27.25 2
9.2 27.8 2
7.5 28.25 2
8.55 27.45 2
8.5 27.05 2
8.05 27.2 2
7.85 26.8 2
7.3 27.4 2
6.8 26.85 2
7 26.5 2
7.55 26.3 2
8.55 26.3 2
9 25.85 2
8.6 25.65 2
9.4 25.55 2
8.45 25.05 2
8.85 24.6 2
9.65 24.7 2
10.55 24.35 2
11.05 23.9 2
10.55 23.55 2
9.45 23.35 2
9.2 23.9 2
8.35 23.9 2
7.35 24.75 2
7.4 25.45 2
6.6 25.75 2
6.1 26 2
5.8 26.95 2
5.65 25.8 2
5.3 26.1 2
6.4 25.4 2
5.4 25.25 2
5.35 24.7 2
4.8 25.05 2
4.2 25.55 2
6.4 24.8 2
6.55 24.3 2
7.4 24.25 2
5.45 24.2 2
4.3 24 2
4 24.25 2
3.35 23.3 2
4.85 23.05 2
4.3 22.75 2
5.85 23.4 2
5.9 23.55 2
7.55 23.7 2
6.85 23.25 2
7.65 23.1 2
6.95 22.55 2
6.1 22.6 2
5.5 22.6 2
4.7 22.1 2
3.8 21.85 2
4.65 21.2 2
4.15 20.35 2
5.3 20.4 2
5.6 20.75 2
5.8 21.95 2
6.4 21.95 2
6.55 21.15 2
7.45 21.95 2
7.4 21.55 2
7.75 21.2 2
7.65 20.65 2
6.95 19.8 2
6.6 20.1 2
6.05 20.2 2
5.4 19.65 2
5.35 19.05 2
5.8 18.25 2
6.3 19.1 2
7 18.9 2
7.15 17.9 2
7.35 18.2 2
8.2 20.05 2
8.3 19.45 2
8.3 18.5 2
8.75 18.8 2
9.05 18.2 2
9.35 17.7 2
8.9 17.65 2
8.45 17.2 2
10.05 17.2 2
10.4 16.75 2
8.6 20.9 2
8.65 21.3 2
8.65 21.9 2
8.65 22.5 2
8.95 22.8 2
9.95 22.65 2
8.95 22.2 2
9.65 21.9 2
10.55 22.3 2
10.9 22.85 2
11.35 23.45 2
12.05 23.4 2
12.3 22.75 2
11.7 22.15 2
11.15 22.05 2
10.85 21.5 2
10.85 21.05 2
9.6 21.3 2
9.85 20.7 2
9.35 20.6 2
9.25 19.65 2
9.95 19.8 2
10.7 20.35 2
11.3 20.7 2
12.35 21.6 2
13.1 21.3 2
12.85 20.75 2
12 20 2
11 19.85 2
10.35 19 2
9.9 18.65 2
10.6 18.15 2
11.4 18.3 2
11.4 19.25 2
12.35 18.8 2
12.8 19.75 2
12.15 18.1 2
11.05 17.5 2
11.95 17.25 2
12.25 17.5 2
13.05 17.4 2
13.75 18.15 2
13.5 18.65 2
13.65 19.25 2
14 19.9 2
15.2 18.2 2
15.5 17.15 2
13.9 17.1 2
13.75 16.6 2
12.15 16.4 2
7.8 13.7 7
8.85 13.35 7
9 12.7 7
9.7 12.1 7
8.05 12.9 7
7.7 13.25 7
6.8 13.2 7
6.6 13.45 7
6.2 12.55 7
5.4 12.85 7
5.7 12.25 7
5.2 11.9 7
5.15 11.35 7
5.85 11.2 7
6.1 11.75 7
7 12.35 7
7.05 12.45 7
7.9 12.5 7
8.55 12.1 7
7.85 11.85 7
7.1 11.95 7
6.9 11.5 7
6.85 10.9 7
6.4 10.7 7
5.9 10.3 7
6.4 10.25 7
7.05 10.05 7
7.35 10.5 7
7.65 11.1 7
8.1 11.2 7
8.8 11.4 7
8.3 10.55 7
9 10.9 7
9.35 10.5 7
10.15 11 4
10.4 10.55 4
10.9 10 4
11.55 10.2 4
11.75 10.85 4
10.1 8.65 4
11.05 9.1 4
11.85 9.8 4
12.85 10.65 4
12.9 11.7 4
13.6 11.1 4
14.05 11.75 4
14.5 11.8 4
14.3 12.45 4
17 12.9 4
15.8 12.6 4
15.85 12 4
16.7 12.2 4
16.25 11.7 4
15.55 11.15 4
14.8 11.35 4
14.45 10.75 4
13.75 10.45 4
12.8 10.1 4
13.15 9.8 4
12.45 9.3 4
11.8 8.95 4
11.1 8.45 4
10.35 7.7 4
10.1 6.75 4
11.3 7.95 4
12.35 8.45 4
13.1 8.95 4
13.2 9.35 4
14.1 10.05 4
11.5 7.5 4
11.35 6.9 4
11.95 6.75 4
12.4 7.1 4
12.25 7.6 4
12.95 7.6 4
13.45 7.95 4
13.35 8.25 4
13.75 9 4
14.3 9.3 4
14.85 9.55 4
15.1 10.25 4
15.45 10.55 4
16.35 10.85 4
16.75 11.5 4
16.25 10.2 4
15.4 10.1 4
15.45 9.7 4
15.15 9.3 4
15.25 8.65 4
15.55 8.2 4
14.25 8.7 4
14.25 8.25 4
15.05 7.8 4
14.3 7.5 4
13.55 7.45 4
14.3 6.95 4
13.95 6.7 4
13.05 6.95 4
13.05 6.2 4
11.55 6.3 4
10.8 5.85 4
10.6 5.05 4
11.35 5.55 4
12.15 5.4 4
12.4 5.8 4
12.8 5.7 4
13.65 5.9 4
13.9 5.3 4
13.1 5.1 4
12.55 4.9 4
11.5 4.75 4
11.35 4.05 4
12.4 4.35 4
11.75 3.45 4
12.65 3.7 4
13.4 4.35 4
13.9 4.95 4
12.75 3 4
13.55 3.15 4
13.7 3.65 4
14.1 4.1 4
14.65 5.05 4
14.35 5.75 4
14.5 6.55 4
15.15 7.1 4
13.6 2.55 4
14.45 2.4 4
14.6 3.05 4
15 3.4 4
15.25 3.5 4
14.7 4.1 4
14.7 4.5 4
15.25 2.7 4
15.65 2.05 4
15.95 2.8 4
16.1 3.55 4
15.9 4 4
15.6 4.75 4
15.55 5.05 4
15.35 5.5 4
15.15 5.95 4
15.5 6.75 4
15.7 6.35 4
16.2 5.9 4
16.35 5.35 4
16.2 4.55 4
16.55 4.2 4
16.95 4.75 4
17.05 5.1 4
17.3 4.8 4
17.3 4.15 4
17.6 4.3 4
17.05 3.7 4
17.25 3.05 4
16.65 2.8 4
16.55 2.15 4
17.2 2.05 4
18.15 1.95 4
18.05 2.45 4
18.15 3.05 4
18.6 3.45 4
18.4 3.6 4
18.85 3.2 4
19.1 2.65 4
19.45 2.65 4
19 2.1 4
19.9 2.05 4
20.45 2.8 4
19.8 3.25 4
19.45 3.9 4
18.65 4.2 4
18.4 4.6 4
18.65 4.75 4
18.75 5.15 4
19.1 4.55 4
17.9 5.4 4
17.65 5.7 4
17.05 6.05 4
17.4 6.5 4
16.6 6.85 4
15.7 7.15 4
15.75 7.75 4
16.6 7.95 4
20.4 3.4 4
20.7 3.45 4
21.15 2.85 4
21.75 2.65 4
22 3.25 4
22.2 3.5 4
21.45 3.75 4
21.1 4.05 4
20.15 4.3 4
20.8 4.7 4
20.7 5.15 4
19.75 5.05 4
19.85 5.5 4
20.4 5.65 4
20.55 5.75 4
18.7 5.75 4
19.25 5.95 4
18.4 6 4
18.45 6.6 4
17.65 7.05 4
16.7 7.4 4
18.65 7.3 4
18.05 7.35 4
17.85 7.75 4
17.5 8.25 4
17.15 8.6 4
17.05 9 4
16.4 8.7 4
16.05 8.95 4
16.05 9.6 4
16.5 9.75 4
17.25 9.6 4
17.6 9.9 4
17.8 9.3 4
18 8.55 4
18.8 8.1 4
18.8 8.35 4
19.4 7.6 4
19.25 6.6 4
20.05 6.95 4
19.8 7.5 4
20.05 6.35 4
21.15 5.7 4
21.65 4.85 4
22.15 4.35 4
23.05 3.35 4
23.05 3.8 4
23.15 4.4 4
22.5 4.75 4
22.15 5.2 4
24.15 4.55 4
23.5 5.05 4
23.1 5.3 4
23 5.75 4
22.2 5.75 4
21.85 6.2 4
20.75 6.55 4
21 7.15 4
20.75 7.65 4
20 8.2 4
19.5 8.65 4
18.85 9.05 4
18.75 9.55 4
18.6 10 4
16.95 10.35 4
17.35 10.85 4
18 10.65 4
18.5 10.55 4
18.1 11.1 4
17.55 11.3 4
17.95 11.9 4
18.3 12 4
18 12.5 4
19 11.65 4
19.5 11.05 4
19.45 10.55 4
19.4 9.65 4
20.1 9.4 4
20.05 9.95 4
20.05 10.2 4
19.35 12.2 4
19.2 12.25 4
20.05 11.6 4
20.6 11.15 4
20.7 10.65 4
21.3 11.65 4
21.8 11.15 4
21.85 10.7 4
21.65 10.05 4
20.95 10.2 4
20.9 9.7 4
21.65 9.45 4
21.2 9.25 4
20.75 8.75 4
20.55 8.75 4
21.1 8 4
21.65 8.65 4
21.75 8.2 4
21.95 7.55 4
22 6.75 4
22.8 6.45 4
22.65 6.65 4
22.75 7.05 4
23 7.35 4
22.55 7.9 4
22.2 8.7 4
22.9 8.45 4
22.35 9.2 4
22.75 9.35 4
22.4 10.05 4
23.05 10.9 4
23.3 9.85 4
23.95 9.8 4
23.65 9.1 4
23.7 8.85 4
24.25 8.25 4
24.85 7.95 4
23.5 7.85 4
23.85 7.35 4
23.95 6.9 4
23.65 6.5 4
23.6 5.7 4
24.3 5.65 4
24.8 6.4 4
34.05 3.5 3
33.05 3.85 3
32 3.8 3
31.9 4.4 3
31.05 4.75 3
30.4 5.65 3
30.75 6.1 3
30 6.7 3
30.1 7.4 3
29.5 8.15 3
30.75 8 3
30.85 7.35 3
31.5 6.75 3
31.75 5.95 3
32.35 6.45 3
32.8 6 3
32.05 5.1 3
32.8 4.8 3
32.65 4.4 3
33.65 4.6 3
33.05 5.15 3
33.6 5.45 3
34.5 5.05 3
34.9 4.65 3
35.45 4.1 3
34.6 4.05 3
34.2 4.2 3
36.3 5.2 3
35.55 5.35 3
35.95 6.05 3
34.8 5.85 3
33.7 6.15 3
33.95 6.6 3
33.7 7.05 3
32.75 7.1 3
32.3 7.65 3
33 7.9 3
31.95 8.15 3
31.15 8.65 3
30.35 8.85 3
29.85 9 3
30.7 9.15 3
29.7 9.9 3
30.45 9.95 3
30.95 9.85 3
31.8 9.45 3
32.45 8.8 3
33.55 8.6 3
34.35 7.7 3
34.7 8 3
34.6 7.25 3
35 6.8 3
35.5 7.35 3
36.1 7.5 3
36.55 7 3
36 8.2 3
35.35 8.05 3
36.55 8.65 3
36.4 9.1 3
35.5 9.1 3
34.55 8.85 3
35.25 9.4 3
34.4 9.5 3
33.5 9.3 3
33.85 9.8 3
32.5 9.65 3
32.3 10.25 3
33.3 10.3 3
31.6 10.5 3
30.6 10.5 3
30.4 11.1 3
30.9 11.45 3
30.7 11.65 3
30.4 12.05 3
31.2 12 3
31.95 11.35 3
31.65 11.05 3
32.95 11.15 3
32.65 11.7 3
32.25 12.25 3
32.05 12.25 3
31.3 12.7 3
31.95 12.95 3
32.75 13.1 3
33.15 13.2 3
33.1 12.75 3
33.15 12.1 3
34.3 11.75 3
34 10.85 3
34.65 11 3
34.8 10.1 3
35.65 9.85 3
36.35 10 3
35.55 10.75 3
35.8 11.55 3
35.2 11.75 3
34.7 11.75 3
34.95 12.75 3
34.05 12.55 3
34.05 13.05 3
33.25 13.7 3
33.2 14.15 3
33.25 14.7 6
33 15.15 6
32.95 15.65 6
32.6 16.15 6
32.45 16.75 6
32.65 17.05 6
32.75 17.3 6
31.75 17.2 6
31.7 17.65 6
31 17.5 6
31.15 17.9 6
30.45 18.05 6
30.05 18.8 6
30.55 18.8 6
30.5 19.3 6
30.25 19.4 6
29.6 19.85 6
29.15 20.55 6
30.25 20.45 6
30.7 20.05 6
31 19.9 6
31.55 19.65 6
31.5 18.55 6
32.05 18.6 6
31.95 19.1 6
32.6 18.35 6
32.85 17.95 6
33.45 17.45 6
33.7 17 6
34.25 17.35 6
34.3 18.05 6
33.85 18.4 6
33.05 18.85 6
33.25 18.95 6
32.8 19.15 6
32.3 19.85 6
32.8 20 6
31.75 20.25 6
31.75 20.75 6
32.1 21.15 6
31.55 21.6 6
30.65 21.3 6
29.95 21.6 6
29.5 21.6 6
30.35 22.05 6
31.05 22 6
31.55 22.2 6
30.95 22.65 6
30.3 23.1 6
29.6 23.15 6
29.35 22.55 6
29.2 23.85 6
30.75 24 6
30.95 24.15 6
31.45 23.7 6
31.95 23.15 6
32.55 22.05 6
32.6 22.55 6
33.25 22.25 6
33.65 21.9 6
33.5 21.3 6
33.1 20.75 6
33.8 20.4 6
33.85 20 6
34.15 19.3 6
34.85 18.85 6
35.3 18.55 6
35.4 19.35 6
34.55 19.75 6
35.05 20 6
35.95 19.85 6
36.35 20.6 6
35.5 20.55 6
34.45 20.65 6
34.4 21.25 6
35 21.05 6
35.75 21.3 6
35.05 21.5 6
34.6 22.05 6
34.2 21.75 6
36.25 21.95 6
35.7 22.3 6
35.5 22.9 6
35.85 23.25 6
36.3 23.8 6
35.45 24.1 6
34.9 23.5 6
34.2 22.9 6
33.85 23.3 6
33.25 23.35 6
32.45 23.7 6
33.6 23.9 6
34.25 23.95 6
34.25 24.1 6
35.4 24.7 6
35.15 25.3 6
34.4 24.9 6
33.7 24.85 6
32.25 24.45 6
32.5 24.7 6
31.45 24.45 6
31.55 25.2 6
31.05 25 6
30.25 24.3 6
29.8 24.8 6
29.6 25.5 6
29.7 26.05 6
30.5 25.5 6
30.65 26 6
31.25 26.05 6
31.45 26.95 6
30.75 26.9 6
30.65 27.15 6
31.25 27.85 6
31.85 27.75 6
32.7 28.2 6
33.25 27.55 6
32.4 27.1 6
32.15 26.65 6
32.35 25.95 6
32.95 25.5 6
33.85 26.05 6
33.05 26.5 6
33.65 27 6
34.1 27.35 6
34.2 27.95 6
34.65 26.85 6
35.25 26 6
35.7 26.15 6
34.4 25.6 6
21.3 20.8 1
20.15 20.9 1
19.2 21.35 1
19.1 21.85 1
18.45 22.8 1
18.75 22.95 1
19.4 23 1
19.55 22.25 1
19.8 21.85 1
20.5 21.85 1
21.45 21.45 1
21.7 21.9 1
21.4 22.3 1
21 22.6 1
21.15 22.95 1
20.5 22.85 1
19.75 23.65 1
19.2 23.7 1
18.45 24.35 1
20.65 23.85 1
20.65 24.3 1
19.7 24.6 1
20.15 25.05 1
22.15 25.1 1
21.6 24.65 1
21.7 23.8 1
21.9 23.65 1
22.55 23.5 1
22.55 24.3 1
23.3 24.45 1
24.25 24.35 1
23.8 25.25 1
23.4 23.8 1
22.9 23.2 1
22.3 22.8 1
22.2 22.4 1
23.1 21.7 1
22.85 21.9 1
22.65 21.1 1
23.15 22.6 1
24.1 21.9 1
24.7 22.2 1
24.3 22.6 1
24.15 23.3 1
23.9 23.45 1
5.2 2.15 5
6.35 1.95 5
6.75 2.3 5
5.9 2.4 5
5.4 2.7 5
4.85 2.9 5
4.85 3.35 5
5.15 3.45 5
5.7 3.45 5
6.2 3 5
6.2 3.2 5
7.65 2.15 5
7.2 2.75 5
6.75 3.2 5
6.75 3.55 5
6.65 3.8 5
5.8 4 5
4.95 4.05 5
5.1 4.35 5
5.7 4.45 5
5.45 4.85 5
6.7 4.8 5
6.55 5.05 5
7.2 4.9 5
6.2 4.25 5
7.1 4.3 5
7.85 4.5 5
7.6 4.15 5
7.25 3.55 5
7.8 3.35 5
8.05 2.75 5
8.5 3.25 5
8.1 3.55 5
8.15 4 5