Извлечь рекомендации для пользователя из сводной таблицы - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующая сводная таблица с количеством покупок, совершенных пользователем / предметом, которая выглядит следующим образом:

originalName  Red t-shirt      Black t-shirt  ...     Orange sweater     Pink sweater
customer                                ...                                       
165                NaN             NaN  ...                  NaN               NaN
265                NaN             1.0  ...                  NaN               NaN
288                NaN             NaN  ...                  NaN               NaN
368                1.0             NaN  ...                  NaN               2.0
396                NaN             NaN  ...                  3.0               NaN

Я написал метод для получения связанных предметов, если я ввел один элемент, используя корреляцию Пирсона

def get_related_items(name, M, num):
    number_of_orders = []
    for title in M.columns:
        if title == name:
            continue
        cor = pearson(M[name], M[title])
        if np.isnan(cor):
            continue
        else:
            number_of_orders.append((title, cor))

    number_of_orders.sort(key=lambda tup: tup[1], reverse=True)
    return number_of_orders[:num]

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

И как я могу это оценить?

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 марта 2020
import pandas as pd
import numpy as np
df=pd.DataFrame({'customer':[165,265,288,268,296],
                'R_shirt':[np.nan,1.0,np.nan,1.0,np.nan],
                'B_shirt':[np.nan,np.nan,2.0,np.nan,np.nan],
                'X_shirt':[5.0,np.nan,2.0,np.nan,np.nan],
                'Y_shirt':[3.0,np.nan,2.0,3.0,np.nan]
                 })
print(df)
   customer  R_shirt  B_shirt  X_shirt  Y_shirt
0       165      NaN      NaN      5.0      3.0
1       265      1.0      NaN      NaN      NaN
2       288      NaN      2.0      2.0      2.0
3       268      1.0      NaN      NaN      3.0
4       296      NaN      NaN      NaN      NaN
df['customer']=df['customer'].astype(str)
df=df.pivot_table(columns='customer')
customer = '165'
print(df)
customer  165  265  268  288
B_shirt   NaN  NaN  NaN  2.0
R_shirt   NaN  1.0  1.0  NaN
X_shirt   5.0  NaN  NaN  2.0
Y_shirt   3.0  NaN  3.0  2.0
best_for_customer=df[customer][df[customer]!=np.nan].to_frame().sort_values(by=customer,ascending=False).dropna()
print(best_for_customer)
         165
X_shirt  5.0
Y_shirt  3.0

переменная customer - это имя клиента, которое вы хотите проверить

0 голосов
/ 06 марта 2020

Ожидаемый рейтинг для пользователя для данного элемента будет средневзвешенным из оценок, присвоенных элементу другими пользователями, где весами будут рассчитанные вами коэффициенты Пирсона. Затем вы можете выбрать предмет с наивысшим ожидаемым рейтингом и рекомендовать его.

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