class_docstr: Computes Mutual Information(MI) between each feature and the label.
  
  The non-streaming sk-learn implementation of MI is used to
  estimate Adjusted Mutual Information(AMI) and MI between all valid features
  and the label. AMI prevents overestimation of MI for high entropy features.
  It is defined as MI(feature, labels) - MI(feature, np.random.shuffle(labels)).
  
  SkLearnMutualInformation will "gracefully fail" on all features
  that are multivalent since they are not supported by sk-learn. The compute
  method will not report statistics for these invalid features.
docstr: Initializes SkLearnMutualInformation.
  
  Args:
    label_feature: The key used to identify labels in the ExampleBatch.
    schema: The schema of the dataset.
    seed: An int value to seed the RNG used in MI computation.
  
  Raises:
    ValueError: If label_feature does not exist in the schema.
docstr_tok: ["Initializes","SkLearnMutualInformation",".","Args",":","label_feature",":","The","key","used","to","identify","labels","in","the","ExampleBatch",".","schema",":","The","schema","of","the","dataset",".","seed",":","An","int","value","to","seed","the","RNG","used","in","MI","computation",".","Raises",":","ValueError",":","If","label_feature","does","not","exist","in","the","schema","."]
code: def __init__(
      self,
      label_feature: types.FeaturePath,
      schema: schema_pb2.Schema,
      seed: int,
  ):
      """Initializes SkLearnMutualInformation.
  
      Args:
        label_feature: The key used to identify labels in the ExampleBatch.
        schema: The schema of the dataset.
        seed: An int value to seed the RNG used in MI computation.
  
      Raises:
        ValueError: If label_feature does not exist in the schema.
      """
      self._label_feature = label_feature
      self._schema = schema
      self._categorical_features = schema_util.get_categorical_features(
          schema
      )
      assert schema_util.get_feature(self._schema, self._label_feature)
      self._label_feature_is_categorical = (
          self._label_feature in self._categorical_features
      )
      self._seed = seed
      self._schema_features = set(
          [
              feature_path
              for (
                  feature_path,
                  _,
              ) in schema_util.get_all_leaf_features(schema)
          ]
      )
  
      # Seed the RNG used for shuffling and for MI computations.
      np.random.seed(seed)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import sys
  from typing import Dict, List, Optional, Sequence, Set, Text, Union
  import numpy
  import pandas
  import pyarrow
  from tensorflow_data_validation import types
  from tensorflow_data_validation.arrow import arrow_util
  from tensorflow_data_validation.statistics.generators import partitioned_stats_generator
  from tensorflow_data_validation.utils import schema_util
  from tensorflow_data_validation.utils import stats_util
  from tfx_bsl.arrow import array_util
  from tensorflow_metadata.proto.v0 import schema_pb2
  from tensorflow_metadata.proto.v0 import statistics_pb2
label_desc: Use image node_id 1 to create a new SkLearnMutualInformation object from inherited base classes: partitioned_stats_generator with example: obj = SkLearnMutualInformation(label_feature, schema, seed)