Быстрый старт¶
Эта страница показывает core plug&play путь: принести скоры донора по warm items, обучить один
метод переноса и предсказать скоры для cold-start items. warmtransfer.bench здесь не нужен.
Установка¶
uv sync
python -m pip install warm-transfer
Запустите пример¶
Полный исполняемый скрипт лежит в репозитории и подключается в документацию напрямую, чтобы пример в доке не расходился с кодом.
Note
Каталог examples/ доступен только при клоне
репозитория; в pip-wheel он не упаковывается.
Если вы ставили через pip, скопируйте сниппет ниже в локальный файл и запустите его напрямую.
"""Minimal plug&play warmtransfer example without warmtransfer.bench.
The user brings warm scores from an already trained donor and content for warm/cold items.
LinMap learns a mapping "content -> vector of per-user scores" and predicts
scores for new items.
"""
from __future__ import annotations
import numpy as np
import pandas as pd
from warmtransfer.columns import Columns as C
from warmtransfer.methods import LinMap
from warmtransfer.types import ItemFeatures, TransferInputs
warm_features = ItemFeatures(
item_ids=np.array([10, 11]),
matrix=np.array([[1.0, 0.0], [0.0, 1.0]]),
feature_names=["genre_action", "genre_drama"],
)
cold_features = ItemFeatures(
item_ids=np.array([20]),
matrix=np.array([[1.0, 0.0]]),
feature_names=["genre_action", "genre_drama"],
)
donor_scores = pd.DataFrame(
{
C.User: [1, 1, 2, 2],
C.Item: [10, 11, 10, 11],
C.Score: [5.0, 1.0, 1.0, 5.0],
}
)
inputs = TransferInputs(
donor_scores=donor_scores,
warm_features=warm_features,
cold_features=cold_features,
)
reco = LinMap(alpha=1.0).fit(inputs, seed=42).predict(
user_ids=np.array([1, 2]),
cold_item_ids=np.array([20]),
)
if __name__ == "__main__":
print(reco.to_string(index=False))
Ожидаемый вывод:
user_id item_id score
1 20 4.0
2 20 2.0
Что произошло¶
donor_scores— long-format таблица[user_id, item_id, score]только по warm items.warm_featuresиcold_featuresсвязывают item ids с content-векторами.LinMap.fit(inputs, seed=42)учит линейное отображение из контента айтема в вектор скоров донора.predict(user_ids, cold_item_ids)возвращает long-format скоры по всем заданным парам user-item.
Дальше¶
- Нужны варианты установки? Читайте Установка.
- Выбираете другой метод? Используйте матрицу возможностей.
- Добавляете свой метод? Следуйте Как добавить свой метод.
- Запускаете бенчмарк? Следуйте Как запустить бенчмарк.