Use absolute imports in Cython code

This is a follow-up of #31847 where we switched to absolute imports for Python files thanks to `ruff` but not Cython files. Maybe one day this can be enforced by `cython-lint --ban-relative-imports`, see https://github.com/MarcoGorelli/cython-lint/issues/149

> [!TIP]
> If you want to work on this, please:
>
> - do one Pull Request per file
> - add a comment in this issue saying which link you want to tackle so that different people can work on this issue in parallel
> - write `Part of #32315` in your Pull Request description so that progress on this issue can more easily be tracked


As an example PR you can look at #32316.

Here is the list of Cython files to tackle
- [x] sklearn/cluster/_dbscan_inner.pyx #32316
- [x] sklearn/cluster/_hdbscan/_linkage.pyx
- [x] sklearn/cluster/_hdbscan/_reachability.pyx
- [x] sklearn/cluster/_hdbscan/_tree.pxd
- [x] sklearn/cluster/_hierarchical_fast.pxd
- [x] sklearn/cluster/_hierarchical_fast.pyx
- [x] sklearn/cluster/_k_means_common.pyx
- [x] sklearn/cluster/_k_means_elkan.pyx
- [x] sklearn/cluster/_k_means_lloyd.pyx
- [x] sklearn/decomposition/_online_lda_fast.pyx
- [x] sklearn/ensemble/_gradient_boosting.pyx @Ganasekhar-gif
- [x] sklearn/ensemble/_hist_gradient_boosting/_binning.pyx
- [x] sklearn/ensemble/_hist_gradient_boosting/_bitset.pxd
- [x] sklearn/ensemble/_hist_gradient_boosting/_bitset.pyx
- [x] sklearn/ensemble/_hist_gradient_boosting/common.pxd
- [x] sklearn/ensemble/_hist_gradient_boosting/_gradient_boosting.pyx
- [x] sklearn/ensemble/_hist_gradient_boosting/histogram.pyx
- [x] sklearn/ensemble/_hist_gradient_boosting/_predictor.pyx
- [x] sklearn/ensemble/_hist_gradient_boosting/splitting.pyx
- [x] sklearn/feature_extraction/_hashing_fast.pyx
- [x] sklearn/linear_model/_cd_fast.pyx
- [x] sklearn/linear_model/_sag_fast.pyx.tp
- [x] sklearn/linear_model/_sgd_fast.pyx.tp
- [x] sklearn/manifold/_barnes_hut_tsne.pyx
- [x] sklearn/manifold/_utils.pyx
- [x] sklearn/metrics/cluster/_expected_mutual_info_fast.pyx
- [x] sklearn/metrics/_dist_metrics.pxd.tp
- [x] sklearn/metrics/_dist_metrics.pyx.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_argkmin_classmode.pyx.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_argkmin.pxd.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_argkmin.pyx.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_base.pxd.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_base.pyx.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_datasets_pair.pxd.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_datasets_pair.pyx.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_middle_term_computer.pxd.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_middle_term_computer.pyx.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_radius_neighbors_classmode.pyx.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_radius_neighbors.pxd.tp
- [x] sklearn/metrics/_pairwise_distances_reduction/_radius_neighbors.pyx.tp
- [x] sklearn/metrics/_pairwise_fast.pyx
- [x] sklearn/neighbors/_binary_tree.pxi.tp
- [x] sklearn/neighbors/_partition_nodes.pxd
- [x] sklearn/neighbors/_quad_tree.pxd
- [x] sklearn/neighbors/_quad_tree.pyx
- [x] sklearn/preprocessing/_csr_polynomial_expansion.pyx
- [x] sklearn/preprocessing/_target_encoder_fast.pyx
- [x] sklearn/svm/_liblinear.pyx
- [x] sklearn/svm/_libsvm.pyx
- [x] sklearn/svm/_libsvm_sparse.pyx
- [x] sklearn/tree/_criterion.pxd
- [x] sklearn/tree/_criterion.pyx
- [x] sklearn/tree/_partitioner.pxd
- [x] sklearn/tree/_splitter.pxd
- [x] sklearn/tree/_splitter.pyx
- [x] sklearn/tree/_tree.pxd
- [x] sklearn/tree/_tree.pyx
- [x] sklearn/tree/_utils.pxd
- [x] sklearn/tree/_utils.pyx
- [x] sklearn/utils/arrayfuncs.pyx
- [x] sklearn/utils/_fast_dict.pxd
- [x] sklearn/utils/_fast_dict.pyx https://github.com/scikit-learn/scikit-learn/pull/32317
- [x] sklearn/utils/_heap.pxd
- [x] sklearn/utils/_heap.pyx
- [x] sklearn/utils/murmurhash.pxd
- [x] sklearn/utils/murmurhash.pyx
- [x] sklearn/utils/_random.pxd
- [x] sklearn/utils/_random.pyx
- [x] sklearn/utils/_seq_dataset.pxd.tp
- [x] sklearn/utils/_seq_dataset.pyx.tp
- [x] sklearn/utils/_sorting.pxd
- [x] sklearn/utils/sparsefuncs_fast.pyx
- [x] sklearn/utils/_vector_sentinel.pxd
- [x] sklearn/utils/_weight_vector.pyx.tp

I got the list of files from the following `git grep` command:
```
git grep -Pl 'from \..+import|import \.' **/*.pxd **/*.pyx **/*.tp 
```

COMMENT:
@lesteve Thanks for clarifying! I’m not attending the PyData sprint.

I’ve been actively looking for open issues in Scikit-learn to contribute to, and I came across this one while browsing the repo’s issue tracker.

If this issue is reserved for sprint participants only, I completely understand and I’ll step aside. Otherwise, I’d be happy to work on it.

Labels: good first issue, help wanted, Meta-issue