Матрица корреляции, такая как DataFrame в Polars ⇐ Python

Программы на Python
Anonymous
Матрица корреляции, такая как DataFrame в Polars

Сообщение Anonymous »

У меня есть фрейм данных Polars
data = {
"col1": ["a", "b", "c", "d"],
"col2": [[-0.06066, 0.072485, 0.548874, 0.158507],
[-0.536674, 0.10478, 0.926022, -0.083722],
[-0.21311, -0.030623, 0.300583, 0.261814],
[-0.308025, 0.006694, 0.176335, 0.533835]],
}

df = pl.DataFrame(data)

Я хочу вычислить косинусное сходство для каждой комбинации столбца col1.
Желаемый результат должен быть следующим:
┌─────────────────┬──────┬──────┬──────┬──────┐
│ col1_col2 ┆ a ┆ b ┆ c ┆ d │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ f64 ┆ f64 ┆ f64 ┆ f64 │
╞═════════════════╪══════╪══════╪══════╪══════╡
│ a ┆ 1.0 ┆ 0.86 ┆ 0.83 ┆ 0.54 │
│ b ┆ 0.86 ┆ 1.0 ┆ 0.75 ┆ 0.41 │
│ c ┆ 0.83 ┆ 0.75 ┆ 1.0 ┆ 0.89 │
│ d ┆ 0.54 ┆ 0.41 ┆ 0.89 ┆ 1.0 │
└─────────────────┴──────┴──────┴──────┴──────┘

Где каждое значение представляет собой косинусное сходство между соответствующими значениями столбца.
Я использую следующую функцию косинусного сходства
< pre class="lang-py Prettyprint-override">from numpy.linalg import norm

cosine_similarity = lambda a,b: (a @ b.T) / (norm(a)*norm(b))

Я пытался использовать его с методом поворота
df.pivot(on="col1", values="col2", index="col1", aggregate_function=cosine_similarity)

Однако я получаю следующую ошибку
AttributeError: 'function' object has no attribute '_pyexpr'


Подробнее здесь: https://stackoverflow.com/questions/776 ... -in-polars

Вернуться в «Python»