Как получить набор данных, который содержит как категориальные данные, так и непрерывные данные, в определяемую пользователем метрическую функцию в DBSCAN? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть набор данных с непрерывными и категориальными значениями. Я хотел бы написать функцию в качестве метрики в DBSCAN, которая использует одинаковое евклидово расстояние для непрерывного и для работы с категориальными значениями, она должна идентифицировать целое строковое значение с другим строковым значением. Если эти 2 значения равны, он должен дать расстояние как 0, если они не равны, то он должен привести к одному в результате. Когда я пытаюсь написать пользовательскую функцию для метрики, она совсем не передает данные в мою функцию. Это выдает ошибку типа "не удалось преобразовать строку в число с плавающей точкой:" 'second' ""? Есть ли способ передать данные в мою функцию? enter image description here

Датафрейм выглядит так:

        sundar call      raju   ram     sony  tintu  banti
points                                                    
x1         0.6  '0'   'first'  0.93   'lion'   0.34   0.98
x2         0.7  '1'  'second'  0.47    'cat'   0.43   0.76
x3         0.4  '0'   'third'  0.87  'tiger'   0.24   0.10
x4         0.6  '0'   'first'  0.93   'lion'   0.34   0.98
x5         0.5  '1'   'first'  0.32  'tiger'   0.09   0.99
x6         0.4  '0'   'third'  0.78  'tiger'   0.18   0.17
x7         0.5  '1'  'second'  0.98    'cat'   0.47   0.78 

1 Ответ

0 голосов
/ 30 августа 2018

Полагаю, вам следует инициализировать DBSCAN с помощью "предварительно вычисленной" метрики:

dbscan = sklearn.cluster.DBSCAN(metric="precomputed")

(другие параметры опущены). Затем рассчитайте метрики между всеми выборками и получите матрицу формы [n_samples, n_samples].

X = user_defined_metric(data, data)

затем используйте эти данные для соответствия DBSCAN:

labels = dbscan.fit_predict(X)

Согласно документации sklearn,

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

Performs clustering on X and returns cluster labels.
Parameters: 
X : array or sparse (CSR) matrix of shape (n_samples, n_features), or array of shape (n_samples, n_samples)
    A feature array, or array of distances between samples if metric='precomputed'.

Второй случай - массив формы [n_samples, n_samples] ваш.

...