Как назначить 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

Другие вопросы по тегам