Install & Compatibility
Where this runs
tested against v1.1.5 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
py 3.10
✕ build_error
✓ 7.3s
py 3.11
✕ build_error
✓ 7.2s
py 3.12
✕ build_error
✓ 7.5s
py 3.13
✕ build_error
✓ 7.4s
py 3.9
✕ build_error
✕ build_error
237MB installed
● package 237MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Dataset
✓ from surprise import Dataset
Correct import path.
Reader
✓ from surprise import Reader
Used to parse ratings from file or dataframe.
SVD
✓ from surprise import SVD
Standard matrix factorization algorithm.
accuracy
✓ from surprise import accuracy
For RMSE, MAE, etc.
cross_validate
✓ from surprise.model_selection import cross_validate
✗ from surprise.model_selection import cross_validate
Common mistake: importing from surprise directly (no cross_validate at top level).
GridSearchCV
✓ from surprise.model_selection import GridSearchCV
✗ from surprise.model_selection import GridSearchCV
Same as above.
Loads the Movielens 100k dataset, trains SVD, and evaluates RMSE.
from surprise import Dataset, Reader, SVD, accuracy
from surprise.model_selection import train_test_split
# Load the built-in movielens dataset
data = Dataset.load_builtin('ml-100k')
trainset, testset = train_test_split(data, test_size=0.25)
algo = SVD()
algo.fit(trainset)
predictions = algo.test(testset)
rmse = accuracy.rmse(predictions)
print(f"RMSE: {rmse}")
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'surprise'
Package not installed or installed under 'scikit-surprise' but imported as 'surprise'.
fixpip install scikit-surprise. The import is 'import surprise' or 'from surprise import ...'.
ValueError: `rating_scale` must be a tuple (low, high).
Reader not initialized with rating_scale when using custom dataset.
fixreader = Reader(rating_scale=(1, 5))
AttributeError: module 'surprise' has no attribute 'cross_validate'
cross_validate is in surprise.model_selection, not top-level surprise.
fixfrom surprise.model_selection import cross_validate
FileNotFoundError: [Errno 2] No such file or directory: '~/.surprise_data/ml-100k/...'
Built-in dataset not downloaded (network issue or missing folder).
fixRun Dataset.load_builtin('ml-100k') with internet; or set SURPRISE_DATA_FOLDER to an existing directory. Upgrade
Version history
1.1.5latest on PyPI · released May 30, 2026
Audit
Dependencies
numpyrequiredRequired for numerical operations
scipyrequiredRequired for sparse matrix operations
joblibrequiredUsed for parallel execution