diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 14ed6869e..55af5d198 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -556,7 +556,7 @@ jobs:
path: |
data
!data/*.zip
- key: test-mldata-000-2ee919d5c0eef34d5a4f40bcf0480c1bf0310417db6921e3a2575c48991f379c2f4ad179f8514390133795614a96fa5b4ece55906c68a90af07c09670b2c3c5b
+ key: test-mldata-001-2ee919d5c0eef34d5a4f40bcf0480c1bf0310417db6921e3a2575c48991f379c2f4ad179f8514390133795614a96fa5b4ece55906c68a90af07c09670b2c3c5b
- name: Download ML data
run: |
python -m lenskit.data.fetch ml-100k ml-20m
@@ -613,7 +613,7 @@ jobs:
path: |
data
!data/*.zip
- key: test-mldata-000-cd26f1c44a6962b0936346b346a9b418a3ed04b01a2892269fccd24a6387e943dba6d5e64ab2f8feb1823475601d65c2e6ebbeeeca0c2c210f0d37c00aabf2e9
+ key: test-mldata-001-cd26f1c44a6962b0936346b346a9b418a3ed04b01a2892269fccd24a6387e943dba6d5e64ab2f8feb1823475601d65c2e6ebbeeeca0c2c210f0d37c00aabf2e9
- name: Download ML data
run: |
python -m lenskit.data.fetch ml-100k ml-1m ml-10m ml-20m
diff --git a/.vscode/ltex.dictionary.en-US.txt b/.vscode/ltex.dictionary.en-US.txt
index b7e0c9ac0..2882dffb6 100644
--- a/.vscode/ltex.dictionary.en-US.txt
+++ b/.vscode/ltex.dictionary.en-US.txt
@@ -9,3 +9,4 @@ lenskit
invoker
CUDA
subpackages
+recomputation
diff --git a/conftest.py b/conftest.py
index 277df074b..9deb7043d 100644
--- a/conftest.py
+++ b/conftest.py
@@ -15,6 +15,7 @@
from pytest import fixture, skip
from lenskit.parallel import ensure_parallel_init
+from lenskit.util.test import ml_100k, ml_ds, ml_ratings # noqa: F401
logging.getLogger("numba").setLevel(logging.INFO)
diff --git a/docs/GettingStarted.ipynb b/docs/GettingStarted.ipynb
index 9742b32e7..04c933104 100644
--- a/docs/GettingStarted.ipynb
+++ b/docs/GettingStarted.ipynb
@@ -26,8 +26,8 @@
"metadata": {},
"outputs": [],
"source": [
- "from lenskit.datasets import ML100K\n",
"from lenskit.data import from_interactions_df\n",
+ "from lenskit.data.movielens import load_movielens_df\n",
"from lenskit import batch, topn, util\n",
"from lenskit import crossfold as xf\n",
"from lenskit.algorithms import Recommender, als, knn\n",
@@ -77,7 +77,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
@@ -156,15 +156,14 @@
"4 166 346 1.0 886397596"
]
},
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "ml100k = ML100K(here('data/ml-100k'))\n",
- "ratings = ml100k.ratings\n",
- "ratings.head()"
+ "ml100k = load_movielens_df(here('data/ml-100k.zip'))\n",
+ "ml100k.head()"
]
},
{
@@ -178,7 +177,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
@@ -210,7 +209,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
@@ -235,22 +234,22 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
- "/Users/mde48/LensKit/lkpy/lenskit/lenskit/data/matrix.py:152: UserWarning: Sparse CSR tensor support is in beta state. If you miss a functionality in the sparse tensor support, please submit a feature request to https://github.com/pytorch/pytorch/issues. (Triggered internally at /Users/runner/miniforge3/conda-bld/libtorch_1716578890680/work/aten/src/ATen/SparseCsrTensorImpl.cpp:55.)\n",
- " matrix = matrix.to_sparse_csr()\n"
+ "/Users/mde48/LensKit/lkpy/lenskit/lenskit/data/dataset.py:628: UserWarning: Sparse CSR tensor support is in beta state. If you miss a functionality in the sparse tensor support, please submit a feature request to https://github.com/pytorch/pytorch/issues. (Triggered internally at /Users/runner/miniforge3/conda-bld/libtorch_1719361060788/work/aten/src/ATen/SparseCsrTensorImpl.cpp:55.)\n",
+ " return torch.sparse_csr_tensor(\n"
]
}
],
"source": [
"all_recs = []\n",
"test_data = []\n",
- "for train, test in xf.partition_users(ratings[['user', 'item', 'rating']], 5, xf.SampleFrac(0.2)):\n",
+ "for train, test in xf.partition_users(ml100k[['user', 'item', 'rating']], 5, xf.SampleFrac(0.2)):\n",
" test_data.append(test)\n",
" all_recs.append(eval('ItemItem', algo_ii, train, test))\n",
" all_recs.append(eval('ALS', algo_als, train, test))"
@@ -265,7 +264,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {},
"outputs": [
{
@@ -299,32 +298,32 @@
"
\n",
" \n",
" 0 | \n",
- " 1125 | \n",
- " 5.014371 | \n",
+ " 1449 | \n",
+ " 4.994975 | \n",
" 2 | \n",
" 1 | \n",
" ItemItem | \n",
"
\n",
" \n",
" 1 | \n",
- " 1449 | \n",
- " 4.967544 | \n",
+ " 1398 | \n",
+ " 4.866851 | \n",
" 2 | \n",
" 2 | \n",
" ItemItem | \n",
"
\n",
" \n",
" 2 | \n",
- " 427 | \n",
- " 4.863028 | \n",
+ " 511 | \n",
+ " 4.845399 | \n",
" 2 | \n",
" 3 | \n",
" ItemItem | \n",
"
\n",
" \n",
" 3 | \n",
- " 483 | \n",
- " 4.855851 | \n",
+ " 1512 | \n",
+ " 4.805413 | \n",
" 2 | \n",
" 4 | \n",
" ItemItem | \n",
@@ -332,7 +331,7 @@
"
\n",
" 4 | \n",
" 1594 | \n",
- " 4.846334 | \n",
+ " 4.788468 | \n",
" 2 | \n",
" 5 | \n",
" ItemItem | \n",
@@ -343,14 +342,14 @@
],
"text/plain": [
" item score user rank Algorithm\n",
- "0 1125 5.014371 2 1 ItemItem\n",
- "1 1449 4.967544 2 2 ItemItem\n",
- "2 427 4.863028 2 3 ItemItem\n",
- "3 483 4.855851 2 4 ItemItem\n",
- "4 1594 4.846334 2 5 ItemItem"
+ "0 1449 4.994975 2 1 ItemItem\n",
+ "1 1398 4.866851 2 2 ItemItem\n",
+ "2 511 4.845399 2 3 ItemItem\n",
+ "3 1512 4.805413 2 4 ItemItem\n",
+ "4 1594 4.788468 2 5 ItemItem"
]
},
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
@@ -369,7 +368,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
@@ -387,7 +386,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 11,
"metadata": {},
"outputs": [
{
@@ -427,27 +426,27 @@
" ItemItem | \n",
" 2 | \n",
" 100 | \n",
- " 0.085382 | \n",
+ " 0.081186 | \n",
"
\n",
" \n",
- " 7 | \n",
+ " 6 | \n",
" 100 | \n",
- " 0.223133 | \n",
+ " 0.288946 | \n",
"
\n",
" \n",
" 8 | \n",
" 100 | \n",
- " 0.097582 | \n",
+ " 0.082112 | \n",
"
\n",
" \n",
- " 9 | \n",
+ " 10 | \n",
" 100 | \n",
- " 0.063818 | \n",
+ " 0.364167 | \n",
"
\n",
" \n",
- " 10 | \n",
+ " 14 | \n",
" 100 | \n",
- " 0.211332 | \n",
+ " 0.182636 | \n",
"
\n",
" \n",
"\n",
@@ -456,14 +455,14 @@
"text/plain": [
" nrecs ndcg\n",
"Algorithm user \n",
- "ItemItem 2 100 0.085382\n",
- " 7 100 0.223133\n",
- " 8 100 0.097582\n",
- " 9 100 0.063818\n",
- " 10 100 0.211332"
+ "ItemItem 2 100 0.081186\n",
+ " 6 100 0.288946\n",
+ " 8 100 0.082112\n",
+ " 10 100 0.364167\n",
+ " 14 100 0.182636"
]
},
- "execution_count": 10,
+ "execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
@@ -484,19 +483,19 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Algorithm\n",
- "ALS 0.140061\n",
- "ItemItem 0.099664\n",
+ "ALS 0.132649\n",
+ "ItemItem 0.096963\n",
"Name: ndcg, dtype: float64"
]
},
- "execution_count": 11,
+ "execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
@@ -507,7 +506,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 13,
"metadata": {},
"outputs": [
{
@@ -516,13 +515,13 @@
""
]
},
- "execution_count": 12,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
- "image/png": "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sbGxWrp0qZYvX66QEK5WgD/+VgAAgq6jo0OZmZmEFfSIvxkAgKD7+c9/rvLy8mC3AYPx4DgAQNB5PB498cQTev311zVlyhS/i243bNgQpM5gCq5hAQAE3bXXXtvjazabTW+++WYfdgMTEVgAAIDxuIYFAGCMjz/+WK+//rq+/vprSRL/psZZBBYAQNC1trbqpz/9qX70ox9p7ty5crlckqQlS5boV7/6VZC7gwkILACAoMvNzVV4eLiampo0ZMgQ73hmZqZ27doVxM5gCu4SAgAE3e7du/X666/rBz/4gc/4D3/4Qx05ciRIXcEkzLAAAILuq6++8plZOaulpUV2uz0IHcE0BBYAQNDNnDlTW7du9a7bbDZ1dXVp3bp157zlGYMHtzUDAILuww8/1DXXXCOn06k333xT8+bN0wcffKDPP/9cb7/9tiZMmBDsFhFkBBYAgBGam5tVXFys2tpadXV1adq0abrvvvs0evToYLcGAxBYAABB19TUpLi4ONlstm5fGzduXBC6gkkILACAoAsNDZXL5dKoUaN8xltbWzVq1Ch5PJ4gdQZTcNEtACDoLMvqdnbl5MmTcjgcQegIpuE5LACAoMnLy5N05q6gVatW+dza7PF49M477+jKK68MUncwCYEFABA0dXV1ks7MsLz//vuKiIjwvhYREaGpU6dq2bJlwWoPBuEaFgBA0N19993auHGjhg4dGuxWYCgCCwAgaH72s5+dV91LL730PXcC03FKCAAQNFFRUcFuAf0EMywAAMB43NYMAACMR2ABAADGI7AAAADjEVgAAIDxCCwALtiePXtks9n05ZdfGvNe48ePV2Fh4ffeD4C+QWABcN6qq6sVGhqq66+/Pmg9pKWlyeVyeW+Hff755zVs2LCg9QOgbxBYAJy3srIy3X///dq3b5+ampr6/P07OzsVERGh2NjYbn8oD8DARWABcF6++uor/eEPf9C9996rf/mXf9Hzzz9/zvotW7YoLi5OQ4YM0b/+679qw4YNfjMhxcXFmjBhgiIiIjRx4kS98MILPq/bbDaVlJTopptu0qWXXqpf//rXPqeE9uzZo7vvvlttbW2y2Wyy2Wx65JFHvNufOnVKixYt0tChQzVu3Dht3rzZ+1pjY6NsNpv+8Ic/KD09XZdccon+6Z/+SR999JH+9re/KSUlRZdddpmuv/56ffbZZxf6nw/AhbIA4DyUlpZaKSkplmVZ1quvvmqNHz/e6urqsizLst566y1LkvXFF19YlmVZ+/bts0JCQqx169ZZhw4dsjZt2mRdfvnlVlRUlHd/L730khUeHm5t2rTJOnTokPXkk09aoaGh1ptvvumtkWSNGjXKKi0ttf7+979bjY2NPu/V3t5uFRYWWpGRkZbL5bJcLpd14sQJy7IsKz4+3rr88sutTZs2Wf/zP/9jFRQUWCEhIVZDQ4NlWZZ1+PBhS5I1adIka9euXdaHH35o/fM//7M1bdo065prrrH27dtnvfvuu9Y//MM/WNnZ2X3wXxjAuRBYAJyXtLQ0q7Cw0LIsy+rs7LSio6OtyspKy7L8A0tmZqZ1ww03+Gx/5513+gSWtLQ065577vGpueWWW6y5c+d61yVZOTk5PjXffq/nnnvOZ79nxcfHW3fddZd3vauryxo1apRVXFxsWdb/DyzPPvust2bbtm2WJOuvf/2rd6ygoMCaOHHiuf7TAOgDnBIC8J0OHTqk/fv367bbbpMkhYWFKTMzU2VlZT3W//jHP/YZ+/Z6Q0ODZsyY4TM2Y8YMNTQ0+IylpKT0uu8pU6Z4/2yz2RQbG6vjx4/3WBMTEyNJuuKKK3zGvr0NgL7Hjx8C+E6lpaU6ffq0xo4d6x2zLEvh4eH64osv/Ooty/K7KNbq5mfLuqv59till17a677Dw8P93q+rq6vHmrPv/e2xb28DoO8xwwLgnE6fPq2tW7fqySefVH19vXc5ePCg4uPj9fvf/95vm0mTJmn//v0+YwcOHPBZT0pK0r59+3zGqqurlZSUFFB/ERER8ng8AW0DoP9hhgXAOf3lL3/RF198ocWLF3uffXLWzTffrNLSUv3Xf/2Xz/j999+vmTNnasOGDbrxxhv15ptv6rXXXvOZPfn3f/933XrrrZo2bZp++tOf6tVXX9VLL72kN954I6D+xo8fr5MnT+qvf/2rpk6dqiFDhmjIkCG9P2AARmKGBcA5lZaWatasWX5hRZIWLFig+vp6vfvuuz7jM2bMUElJiTZs2KCpU6dq165dys3NlcPh8NbMnz9fTz31lNatW6d//Md/1G9/+1s999xzuuaaawLqLy0tTdnZ2crMzNTIkSP1xBNP9Oo4AZjNZnV3YhkALrJ77rlH//3f/62qqqpgtwKgH+KUEIDvxfr163Xdddfp0ksv1Wuvvabf/e53KioqCnZbAPopZlgAfC9uvfVW7dmzRydOnFBiYqLuv/9+ZWdnB7stAP0UgQUAABiPi24BAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOP9Pz0IvsSzsXRNAAAAAElFTkSuQmCC",
+ "image/png": "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",
"text/plain": [
"