code: def _mi_high_dim_cc(
      arr0: np.ndarray,
      arr1: np.ndarray,
      k: int,
      estimate_method: str,
      weights: np.ndarray,
  ) -> Tuple[float, np.ndarray]:
      """Computes high dimensional MI for ordinal features."""
      arr = np.hstack([arr0, arr1])
      m0 = arr0.shape[1]
      n_samples, _ = arr.shape
  
      nn = sklearn.neighbors.NearestNeighbors(
          metric="chebyshev", n_neighbors=k, n_jobs=1
      )
      nn.fit(arr)
      k_neighbors = nn.kneighbors()
  
      if estimate_method == "smaller_data":
          # Use one radius for all features. Exclude the point on the boundary by
          # taking a radius slightly smaller than the distance to the k-th nearest
          # neighbor.
          r = np.nextafter(k_neighbors[0][:, -1], 0).reshape((-1, 1))
          radius = np.hstack([r, r])
      elif estimate_method == "larger_data":
          # Treat arr0 and arr1 as two high dimensional features and each of them uses
          # its own projection of the radius. The idea is to look at the k nearest
          # neighbors and find the radius (largest distance) in the two sub-spaces
          # separately. The following code does this for chebyshev distance metric.
          ind = k_neighbors[1][:, 0]
          r = np.fabs(arr - arr[ind])
          for i in range(1, k_neighbors[1].shape[1]):
              ind = k_neighbors[1][:, i]
              r = np.maximum(r, np.fabs(arr - arr[ind]))
          r0 = np.max(r[:, :m0], axis=1).reshape((-1, 1))
          r1 = np.max(r[:, m0:], axis=1).reshape((-1, 1))
          radius = np.hstack([r0, r1])
  
      mi0, each0 = _process_high_dim(
          arr0, radius[:, 0], estimate_method, weights
      )
      mi1, each1 = _process_high_dim(
          arr1, radius[:, 1], estimate_method, weights
      )
      mi = (mi0 + mi1) / float(n_samples)
  
      if estimate_method == "smaller_data":
          extra = (
              scipy.special.digamma(k)
              + scipy.special.digamma(n_samples)
          ) * weights
      elif estimate_method == "larger_data":
          extra = (
              scipy.special.digamma(k)
              + scipy.special.digamma(n_samples)
              - 1.0 / k
          ) * weights
      mi += np.mean(extra)
      each = each0 + each1 + extra
  
      final_mi = max(0.0, mi / math.log(2))
      return final_mi, each / math.log(2)
  
imports: import functools
  import itertools
  import math
  from typing import Any, List, Optional, Tuple, Union
  import uuid
  import numpy
  import pandas
  import scipy.special
  import sklearn.neighbors
label_desc: Use image node_id 16 for calling a global function with example usage: _mi_high_dim_cc(arr0, arr1, k, estimate_method, weights) and returns: final_mi,  unknown