What's Changed
🚨 Breaking Changes
- Make
daskan optional dependency by @jcrist in #7303 - Using
int64_tfor HDBSCAN and droppingintby @jinsolp in #7104 - UMAP - delay embedding allocation by @viclafargue in #7313
- Don't infer dtype from model in
cuml.explainerby @jcrist in #7358 - Cleanup LinearRegression by @jcrist in #7355
- Cleanup
AgglomerativeClusteringby @jcrist in #7379 - Cleanup
LinearSVC/LinearSVRby @jcrist in #7376 - Require CUDA 12.2+ by @jakirkham in #7408
- Several improvements to
Ridgeby @jcrist in #7410 - Expose
n_iter_in SVC/SVR by @jcrist in #7461 - Standardize regression
predictoutput dtype by @jcrist in #7464 - Support non-numeric class labels everywhere by @jcrist in #7480
- Rename TSNE
n_itertomax_iterby @jcrist in #7500 - Cleanup
cuml.multiclassby @jcrist in #7508 - Cleanup
SGD/MBSGDClassifier/MBSGDRegressorby @jcrist in #7504
🐛 Bug Fixes
- Avoid pyyaml runtime dependency. by @csadorf in #7312
- Make conversion from scikit-learn SVM to cuML more robust by @csadorf in #7324
- Revert "CI: Auto-assign priority to PRs from linked issues (#7354)" by @csadorf in #7357
- Adding checks for UMAP precomputed KNN feature by @viclafargue in #7300
- Unpin treelite and xfail some tests affected by the XGBoost/treelite incompatibility by @csadorf in #7366
- Fix issue in Dask DBSCAN by @viclafargue in #7359
- CI: Increase nightly CI check window to 14 days. by @csadorf in #7392
- Fix overflow in coordinate descent by @jcrist in #7399
- Fix output argument passed by value causing the copy constructor on owning CSR matrix by @achirkin in #7390
- Fix Dask DBSCAN tree reduction by @viclafargue in #7398
- Fixup the test_kernel_density test. by @csadorf in #7404
- Fetch rapids-cmake configuration for cmake-format in CI style checks by @bdice in #7406
- Fix string slicing dtype mismatch in PorterStemmer for cudf-pandas mode by @csadorf in #7413
- Set the same
random_statevalue forNoneincuml.dask.KMeansfor all workers by @divyegala in #7417 - Init checks for Dask KMeans by @viclafargue in #7391
- Fix
DBSCANoverflow by @divyegala in #7421 - Fix HDBSCAN nn-descent errors with default arguments (min_samples=None) by @viclafargue in #7402
- CI: Xfail test_umap_outliers to mitigate flaky test failure. by @csadorf in #7430
- Ensure
n_components < n_colsincuml.dask.tsvdby @divyegala in #7441 - Skip test_extract_partitions_shape by @csadorf in #7453
- refactored update-version.sh to handle new branching strategy by @rockhowse in #7455
- [BUG] Fix RandomForest Builder Sampling by @tarang-jain in #7422
- Fix the RandomForest sampling bias by @csadorf in #7449
- Pin Cython pre-3.2.0 and PyTest pre-9 by @jakirkham in #7472
- Remove SpectralEmbedding from xfail list by @csadorf in #7487
- Fix UMAP Outliers for small data by @jinsolp in #7473
- Fix PCA sign flip by @zhuxr11 in #7331
- A few small fixes for multi-gpu
PCA/TruncatedSVDby @jcrist in #7560 - Remove unnecessary
syncthreadsin UMAP optimize by @jinsolp in #7575 - Revert precomputed kNN on CPU for UMAP by @jinsolp in #7576
- Pin scikit-learn<1.8 in test dependencies by @csadorf in #7588
📖 Documentation
- Add Spectral Embedding algorithm to README.md by @aamijar in #7348
- Fix and improve build docs by @csadorf in #7383
- Mention pip as install path in README. by @csadorf in #7414
- Use current system architecture in conda environment creation command by @bdice in #7447
- Use
sklearn.datasets.fetch_covtypein example notebook by @jcrist in #7581
🚀 New Features
- Provide a static target for
libcumlby @divyegala in #7351 - HDBSCAN with NN Descent build option by @jinsolp in #7339
- [FEA] Implement kfold. by @trivialfis in #7296
- [FEA] Feature Importances for Random Forests by @tarang-jain in #7275
- SpectralClustering estimator by @aamijar in #7372
🛠️ Improvements
- Update
RAPIDS_BRANCH, codify changes inupdate-version.shby @KyleFromNVIDIA in #7268 - Avoid usage of deprecated cudf
from_pandasby @TomAugspurger in #7284 - Branch 25.12 merge branch 25.10 by @jcrist in #7291
- Update to rapids-logger 0.2 by @bdice in #7301
- Cleanup TSNE python implementation by @jcrist in #7311
- Cleanup
cuml.decompositionby @jcrist in #7316 - A few HDBSCAN cleanups by @jcrist in #7319
- Run the scikit-learn test suite in parallel again by @csadorf in #7315
- A few
cuml.neighborscleanups by @jcrist in #7320 - Cleanup DBSCAN by @jcrist in #7325
- Release GIL in
SpectralEmbeddingby @jcrist in #7326 - Cleanup
*.pxdfiles andcimports by @jcrist in #7327 - Accelerate linear model predict on C-ordered inputs by @jcrist in #7329
- Remove
cuml.ensemble/cuml.dask.ensembledeprecated features by @jcrist in #7332 - Cleanup
Ridgeby @jcrist in #7330 - Add SparseRandomProjection, AgglomerativeClustering and GaussianRandomProjection to common checks by @betatim in #7307
- Enable
sccache-distconnection pool by @trxcllnt in #7344 - Use pinned_host_memory_resource instead of pinned_memory_resource. by @bdice in #7340
- Propagate
Dask/UCXexceptions by @viclafargue in #7308 - Add
libcumllinkage smoke test by @divyegala in #7343 - Cleanup SVM by @jcrist in #7347
- Remove outdated link flags from CMakeLists.txt by @hcho3 in #7349
- Fix flaky
test_logistic_regression_weightingtest by @csadorf in #7321 - CI: Auto-assign priority to PRs from linked issues by @csadorf in #7354
- Reduce warnings verbosity in tests by @csadorf in #7322
- Add xgboost to benchmark utilities by @dantegd in #7350
- Use main in RAPIDS_BRANCH by @bdice in #7364
- Use main shared-workflows branch by @bdice in #7369
- Use SPDX for all copyright headers by @KyleFromNVIDIA in #7373
- Add commit to use SPDX copyright headers to git ignore blame revs. by @csadorf in #7381
- CI: Fix the auto-release assignment GA job. by @csadorf in #7380
- Cleanup
ElasticNet,Lasso, andCDby @jcrist in #7382 - Add cuVS to python test dependencies by @jinsolp in #7385
- Support
KernelDensityincuml.accelby @jcrist in #7397 - Deprecate
normalizeoption to all linear models by @jcrist in #7415 - Expose
n_iter_inLinearSVC/LinearSVRby @jcrist in #7419 - Bring back
KMeansMGby @jcrist in #7420 - Remove reachability.hpp Header by @tarang-jain in #7416
- Add Out-of-Bag (OOB) Score Support to RandomForest by @csadorf in #7401
- Add Third-Party Integration Tests for BERTopic by @csadorf in #7388
- Expose
_fit_Xand_yon neighbors estimators in cuml.accel by @jcrist in #7437 - Refactor pytests spectral embedding by @aamijar in #7435
- Remove shims for CCCL < 3.1 compatibility by @bdice in #7432
- Cleanup
LogisticRegression/QN/LogisticRegressionMGby @jcrist in #7433 - Remove
doubleinstantiations forcuml.explainerkernels by @aamijar in #7384 - Migrate to new CCCL memory resource interface by @bdice in #7450
- Expose
n_iter_inRidgeby @jcrist in #7458 - Expose
n_iter_onElasticNet/Lasso/CDby @jcrist in #7457 - Support of
weightsargument in KNeighbors by @viclafargue in #7289 - Pin pytest<9.0 by @jcrist in #7468
- Cleanup
UMAPandsimpl_setby @jcrist in #7456 - Remove cupy allocator utils by @jcrist in #7463
- Make
cuml.manifold.umap.find_ab_paramspublic by @jcrist in #7477 - Assorted classifier improvements by @jcrist in #7475
- Improve sparse support in
cuml.accelby @jcrist in #7462 - Remove Extra Test in Random Forest by @tarang-jain in #7485
- Update RMM includes from
<rmm/mr/device/*>to<rmm/mr/*>by @bdice in #7483 - Use ruff-check, ruff-format instead of black, flake8, isort by @KyleFromNVIDIA in #7429
- Add ruff formatting migration to .git-blame-ignore-revs by @csadorf in #7489
- Bump Treelite to 4.6.1 by @hcho3 in #7471
- Document
SVC(probability=True)requires 5 samples per class by @jcrist in #7491 - Expose
penalty_normalizedandlbfgs_memoryinLogisticRegressionby @jcrist in #7490 - Remove caveat in cuml.accel docs about PCA/TSVD sign by @jcrist in #7492
- Fixup
test_serializestrides check by @jcrist in #7497 - Use
sccache-distbuild cluster for conda and wheel builds by @trxcllnt in #7440 - Remove global, contextual, and estimator-level
memory_typesettings by @jcrist in #7501 - Use s3 for preprocessor cache by @trxcllnt in #7510
- Update UMAP
random_statedoc by @jcrist in #7518 - Remove
target_dtypeand supporting infra by @jcrist in #7516 - Improved memory efficiency in UMAP given precomputed knn graphs by @jinsolp in #7481
- Temporarily drop xgboost from CI by @jcrist in #7526
- Improve Dask documentation and fix a few minor issues by @csadorf in #7499
- Revert "Temporarily drop xgboost from CI (#7526)" by @csadorf in #7534
- Add minimal support for sklearn 1.8.0rc1 by @jcrist in #7546
- Bump SciPy lower bound to 1.11 by @jcrist in #7551
New Contributors
- @rockhowse made their first contribution in #7455
- @zhuxr11 made their first contribution in #7331
Full Changelog: v25.12.00a...v25.12.00