如何在 sklearn.cluster DBSCAN 中分配 sample_weights?

How to assign sample_weights in sklearn.cluster DBSCAN?

我正在使用 DBSCAN 查找 RGB 图像的像素值簇。

db = DBSCAN(eps=0.3, min_samples=10).fit(X)

其中,X 是一个 N x 3 矩阵。 X 的每一行都包含 RGB 三元组。

现在,我想将权重分配给像素值,作为距图像中心距离的函数。 这是我正在使用的功能:

score = 1 / (1 + math.exp(-a * distance)) # a = 0.001

我计算 weight_matrix 填充 score 如上所述

接下来我这样做了:

db = DBSCAN(eps=0.3, min_samples=10).fit(X,y=None, sample_weight=weight_matrix)

其中,weight_matrix 数组的长度等于 X 中的行数。

但我收到以下错误:

TypeError: fit() got an unexpected keyword argument 'y'

所以我尝试这样做:

db = DBSCAN(eps=0.3, min_samples=10).fit(X, sample_weight=weight_matrix)

现在我得到这个错误:

TypeError: fit() got an unexpected keyword argument 'sample_weight'

我想我传递的参数不正确,但不能确定。我的 scikit-learn 版本是 0.14.0.

看来您使用的是 scikit-learn v <= 0.15,因为这是 DBSCAN 符合形式的最后一个版本

fit(X)

从 0.16 开始是

fit(X, y=None, sample_weight=None)

只需将您的 scikit-learn 更新为 0.16 或 0。17.X