二、DBSCAN
DBSCAN
是scikit-learn
提供的一种密度聚类模型。其原型为:class sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric='euclidean',
metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None)
eps
: 参数,用于确定邻域大小。min_samples
: 参数,用于判断核心对象。metric
:一个字符串或者可调用对象,用于计算距离。如果是字符串,则必须是
metrics.pairwise.calculate_distance
中指定的。metric_params
:一个字典,当metric
为可调用对象时,为metric
提供关键字参数。algorithm
:一个字符串,用于计算两点间距离并找出最近邻的点。可以为:'auto'
:由算法自动选取合适的算法。'ball_tree'
:用ball
树来搜索。'kd_tree'
:用kd
树来搜索。'brute'
:暴力搜索。
leaf_size
:一个整数,用于指定当algorithm=ball_tree
或者kd_tree
时,树的叶结点大小。该参数会影响构建树、搜索最近邻的速度,同时影响存储树的内存。
p
:一个浮点数,指定闵可夫斯基距离的 值。n_jobs
:指定并行度。
属性:
core_sample_indices_
:一个形状为[n_core_samples,]
的数组,给出了核心样本在原始训练集中的位置。components_
:一个形状为[n_core_samples,n_features]
的数组,给出了核心样本的一份拷贝labels_
:一个形状为[n_samples,]
的数组,给出了每个样本所属的簇标记。对于噪音样本,其簇标记为 -1。
方法:
fit(X[, y, sample_weight])
:训练模型。fit_predict(X[, y, sample_weight])
:训练模型并执行聚类,返回每个样本所属的簇标记。
考察 参数的影响:
ARI
指数随着 的增长,先上升后保持平稳最后断崖下降。断崖下降是因为产生的训练样本的间距比较小,最远的两个样本点之间的距离不超过 30。当 过大时,所有的点都在一个邻域中。
核心样本数量随着 的增长而上升。
这是因为随着 的增长,样本点的邻域在扩展,则样本点邻域内的样本会更多,这就产生了更多满足条件的核心样本点。
但是样本集中的样本数量有限,因此核心样本点数量的增长到一定数目后稳定。
考察 参数的影响:
ARI
指数随着 的增长,平稳的下降。核心样本数量随着 的增长基本上线性下降。
这是因为随着 的增长,样本点的邻域中必须包含更多的样本才能使它成为一个核心样本点。因此产生的核心样本点越来越少。