
152
|
第
3
章
这种类型的分析——尝试找出“奇怪的那一个”——被称为
异常值检测
(
outlier
detection
)。如果这是一个真实的应用,那么我们可能会尝试更好地裁切图像,以得到更加
均匀的数据。对于照片中的人有时戴着帽子、喝水或在面前举着某物,我们能做的事情很
少。但需要知道它们是数据中存在的问题,我们应用任何算法都需要解决这些问题。
如果我们想要找到更有趣的簇,而不是一个非常大的簇,那么需要将 eps 设置得更小,取
值在 15 和 0.5(默认值)之间。我们来看一下 eps 不同取值对应的结果:
In[77]:
for eps in [1, 3, 5, 7, 9, 11, 13]:
print("\neps={}".format(eps))
dbscan = DBSCAN(eps=eps, min_samples=3)
labels = dbscan.fit_predict(X_pca)
print("Clusters present: {}".format(np.unique(labels)))
print("Cluster sizes: {}".format(np.bincount(labels + 1)))
Out[77]:
eps=1
Clusters present: [-1]
Cluster sizes: [2063]
eps=3
Clusters present: [-1]
Cluster sizes: [2063]
eps=5
Clusters present: ...