Как назначить sample_weights в 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.
1 ответ
Похоже, что вы используете scikit-learn v <= 0.15, так как это последняя версия, где DBSCAN имел форму
fit(X)
с 0.16 это
fit(X, y=None, sample_weight=None)
Просто обновите ваш scikit-learn до 0.16 или 0.17.X