我正在使用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版本<= 0.15,因为这是DBSCAN最后一次使用以下形式的fit的版本
fit(X)
自0.16版本起,它变成了
fit(X, y=None, sample_weight=None)
简单地将你的scikit-learn更新到0.16或0.17.X版本即可