class_docstr: Encapsulate features, labels, and metadata for a given dataset.
  
  Parameters
  ----------
  name : str
      The name of this feature set.
  
  ids : Union[List[str], numpy.ndarray]
      Example IDs for this set.
  
  labels : Optional[Union[List[str], numpy.ndarray], default=None
      Labels for this set.
  
  features : Optional[Union[:class:`skll.types.FeatureDictList`, :class:`numpy.ndarray`]], default=None
      The features for each instance represented as either a
      list of dictionaries or a numpy array (if ``vectorizer`` is
      also specified).
  
  vectorizer : Optional[Union[:class:`sklearn.feature_extraction.DictVectorizer`, :class:`sklearn.feature_extraction.FeatureHasher`], default=None
      Vectorizer which will be used to generate the feature matrix.
  
  Warnings
  --------
  FeatureSets can only be equal if the order of the instances is
  identical because these are stored as lists/arrays. Since scikit-learn's
  ``DictVectorizer`` automatically sorts the underlying feature matrix
  if it is sparse, we do not do any sorting before checking for equality.
  This is not a problem because we _always_ use sparse matrices with
  ``DictVectorizer`` when creating FeatureSets.
  
  Notes
  -----
  If ids, labels, and/or features are not None, the number of rows in
  each array must be equal.
docstr: Check if ``FeatureSet`` has finite labels.
  
  Returns
  -------
  has_labels : bool
      Whether or not this FeatureSet has any finite labels.
docstr_tok: ["Check","if","``","FeatureSet","``","has","finite","labels",".","Returns","--","--","--","-","has_labels",":","bool","Whether","or","not","this","FeatureSet","has","any","finite","labels","."]
code: def has_labels(self):
      """
      Check if ``FeatureSet`` has finite labels.
  
      Returns
      -------
      has_labels : bool
          Whether or not this FeatureSet has any finite labels.
      """
      # make sure that labels is not None or a list of Nones
      if self.labels is not None and not all(
          label is None for label in self.labels
      ):
          # then check that they are not a list of NaNs
          return not (
              np.issubdtype(self.labels.dtype, np.floating)
              and np.isnan(np.min(self.labels))
          )
      else:
          return False
  
imports: from copy import deepcopy
  from typing import Collection, List, Optional, Tuple, Union
  import numpy
  import scipy.sparse
  from pandas import DataFrame
  from sklearn.feature_extraction import DictVectorizer, FeatureHasher
  from skll.data.dict_vectorizer import DictVectorizer
  from skll.types import FeatGenerator, FeatureDictList, IdType, LabelType, SparseFeatureMatrix
label_desc: Use image node_id 10 for calling the FeatureSet obj's underlying member method code with example usage: obj.has_labels() and returns: unknown, False