Группировка пользователей по покупкам с ML в Python - PullRequest
0 голосов
/ 04 мая 2018

У меня есть набор данных о покупках

user_id, item_id
==================
1, 1
1, 2
1, 3
2, 2
2, 3
3, 8
3, 9
4, 8
4, 9

Исходя из этого, я хочу создать несколько «кластеров». Из данных видно, что пользователи 1 и 2 очень похожи, а пользователи 3 и 4 очень похожи.

Я не знаю, как я могу создать этот анализ с помощью машинного обучения в Python.

Я думаю, это могут быть расстояния с

   1, 2, 3, 4
1, -, ?, ?, ?
2, ?, -, ?, ?
3, ?, ?, -, ?
4, ?, ?, ?, -

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

Что я хочу, так это определить, принадлежат ли различные пользователи к определенным группам на основе их покупок. Например, если некоторые пользователи покупают много предметов, связанных с ребенком, они могут быть новыми матерями / отцами, а пользователи, которые покупают много книг по программному обеспечению, могут быть ИТ-специалистами / студентами.

1 Ответ

0 голосов
/ 04 мая 2018

В этом решении используется SciKit Learn:

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans

#Putting in your data
data = {'user': [1,1,1,2,2,3,3,4,4], 'item':[1,2,3,2,3,8,9,8,9]}

#Turning it into a DataFrame in Pandas (useful if you have more than one attribute in real life    
df = pd.DataFrame(data)

#For this specific example you have to do a reshape because it is a single attribute you are putting in 
item = np.array(data['item']).reshape(-1,1)

#Using sklearn's kmeans to create 2 clusters... you can create as many as you want, but for this example that is the number that made sense
kmeans = KMeans(n_clusters=2)
kmeans.fit(item)

#This is so you can see the labels.  You can append the labels to the dataframe created earlier if you'd like
print(kmeans.labels_)

Этикетки: [0 0 0 0 0 1 1 1 1]. Итак, группа 0 и группа 1. Они в указанном порядке. Таким образом, пользователи 1 и 2 находятся в группе 0, а пользователи 3 и 4 - в группе 1.

...