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:
Hi @lesteve! 

I apologize for the confusion. I am not physically at the PyData Paris sprint. I found this issue through complete chance while browsing scikit-learn issues looking for beginner-friendly contributions to make my first open source contribution.

I missed the warning at the top that said "Please refrain from working on this issue if you are not physically at the sprint." I'm sorry for jumping in without reading that carefully.

I understand this issue was reserved for sprint participants. Should I close this PR? I'm happy to do so if it's more appropriate for someone at the sprint to work on it.

Again, apologies for the oversight, and thank you for your understanding!

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