Как сохранить имена индексов и столбцов при выполнении кослинного сходства косинусов? - PullRequest
1 голос
/ 10 мая 2019

При выполнении sklearn.metrics.pairwise.cosine_simility полученные результаты были получены с индексами 0, 1, 2 ... и именами столбцов 0, 1, 2 ...

Как включитьрезультаты будут с исходными именами столбцов и индексов?

Фрейм данных для расчета:

    user_id  |    age      |  education   |   income    | length_residence
    -----------------------------------------------------------------------
    NIODB6S3 |  43.769912  |  1.537634    |  58.754647  |     7.232344
    BOAWG65L |  43.769912  |  1.537634    |  58.754647  |     7.232344
    3667B8P0 |  20.000000  |  1.000000    |  40.000000  |     4.000000
    VS53SKY5 |  35.000000  |  1.537634    |  75.000000  |    14.000000

Код, который я запустил:

    pd.DataFrame(cosine_similarity(df))

Ожидаемый:

    user_id  |  NIODB6S3  | BOAWG65L  | 3667B8P0
    user_id  |
    ----------------------------------------------
    NIODB6S3 |  1.000000  | 0.000084  | 0.996848
    BOAWG65L |  0.000084  | 1.000000  | 0.000342
    3667B8P0 |  0.996848  | 0.000342  | 1.000000

Получил:

      |     0     |    1      |     2
    --------------------------------------
    0 | 1.000000  | 0.000084  | 0.996848
    1 | 0.000084  | 1.000000  | 0.000342
    2 | 0.996848  | 0.000342  | 1.000000

Я не уверен, содержит ли числовой индекс по умолчанию правильный и оригинальный порядок 'user_id' в df .

1 Ответ

0 голосов
/ 10 мая 2019

Проверено с помощью Косинус Сходство между двумя числовыми списками

scipy.spatial.distance.cosine(array1, array2)

Я могу заменить индекс и столбцы в результатах на исходный индекс

result.index = df.index
result.columns = df.index

Они точнов том же порядке

...