Как создать матрицу расстояний Jaccard для транзакционных данных? - PullRequest
0 голосов
/ 03 февраля 2019

Я новичок в программировании, и это мой первый опубликованный вопрос, поэтому, пожалуйста, наберитесь терпения :) Я пытаюсь создать матрицу расстояний из транзакционных данных, чтобы я мог выполнять кластеризацию и анализировать, какие продукты покупаются вместе.Я использовал pandas.get_dummies для представления транзакций в виде строк и продуктов в виде столбцов.Исходный набор данных довольно большой с 200 столбцами и более 300 000 строк.Чтобы понять концепцию, сначала я использую эти тестовые данные.

data = [[0,1,1,0],[1,1,1,0], [0,0,0,0],[1,0,1,1],[1,0,0,1]]

prods = ['Apple', 'Milk', 'Bread', 'Soap']

ids = [345,123,869,567,376]

df = pd.DataFrame(data, columns = prods ,index = ids)

Я бы хотел, чтобы матрица выглядела так (пожалуйста, игнорируйте значения).https://imgur.com/a/uFvM9nv

Я пробовал использовать функцию scipy pdist (см. Код ниже), но она рассчитывает расстояния для транзакций, а не отдельные продукты, как мне хотелось бы.

res = 1 - pdist(df, 'jaccard')

squareform(res)

distance = pd.DataFrame(squareform(res), index= df.columns, columns=df.columns)

Можете ли выПосоветуйте, пожалуйста, как создать эту матрицу расстояний для продуктов?Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...