class_docstr: A decision tree classifier.
  
  Read more in the :ref:`User Guide <tree>`.
  
  Parameters
  ----------
  criterion : string, optional (default="gini")
      The function to measure the quality of a split. Supported criteria are
      "gini" for the Gini impurity and "entropy" for the information gain.
  
  splitter : string, optional (default="best")
      The strategy used to choose the split at each node. Supported
      strategies are "best" to choose the best split and "random" to choose
      the best random split.
  
  max_features : int, float, string or None, optional (default=None)
      The number of features to consider when looking for the best split:
  
          - If int, then consider `max_features` features at each split.
          - If float, then `max_features` is a percentage and
            `int(max_features * n_features)` features are considered at each
            split.
          - If "auto", then `max_features=sqrt(n_features)`.
          - If "sqrt", then `max_features=sqrt(n_features)`.
          - If "log2", then `max_features=log2(n_features)`.
          - If None, then `max_features=n_features`.
  
      Note: the search for a split does not stop until at least one
      valid partition of the node samples is found, even if it requires to
      effectively inspect more than ``max_features`` features.
  
  max_depth : int or None, optional (default=None)
      The maximum depth of the tree. If None, then nodes are expanded until
      all leaves are pure or until all leaves contain less than
      min_samples_split samples.
  
  min_samples_split : int, float, optional (default=2)
      The minimum number of samples required to split an internal node:
  
      - If int, then consider `min_samples_split` as the minimum number.
      - If float, then `min_samples_split` is a percentage and
        `ceil(min_samples_split * n_samples)` are the minimum
        number of samples for each split.
  
      .. versionchanged:: 0.18
         Added float values for percentages.
  
  min_samples_leaf : int, float, optional (default=1)
      The minimum number of samples required to be at a leaf node:
  
      - If int, then consider `min_samples_leaf` as the minimum number.
      - If float, then `min_samples_leaf` is a percentage and
        `ceil(min_samples_leaf * n_samples)` are the minimum
        number of samples for each node.
  
      .. versionchanged:: 0.18
         Added float values for percentages.
  
  min_weight_fraction_leaf : float, optional (default=0.)
      The minimum weighted fraction of the sum total of weights (of all
      the input samples) required to be at a leaf node. Samples have
      equal weight when sample_weight is not provided.
  
  max_leaf_nodes : int or None, optional (default=None)
      Grow a tree with ``max_leaf_nodes`` in best-first fashion.
      Best nodes are defined as relative reduction in impurity.
      If None then unlimited number of leaf nodes.
  
  class_weight : dict, list of dicts, "balanced" or None, optional (default=None)
      Weights associated with classes in the form ``{class_label: weight}``.
      If not given, all classes are supposed to have weight one. For
      multi-output problems, a list of dicts can be provided in the same
      order as the columns of y.
  
      The "balanced" mode uses the values of y to automatically adjust
      weights inversely proportional to class frequencies in the input data
      as ``n_samples / (n_classes * np.bincount(y))``
  
      For multi-output, the weights of each column of y will be multiplied.
  
      Note that these weights will be multiplied with sample_weight (passed
      through the fit method) if sample_weight is specified.
  
  random_state : int, RandomState instance or None, optional (default=None)
      If int, random_state is the seed used by the random number generator;
      If RandomState instance, random_state is the random number generator;
      If None, the random number generator is the RandomState instance used
      by `np.random`.
  
  min_impurity_split : float, optional (default=1e-7)
      Threshold for early stopping in tree growth. A node will split
      if its impurity is above the threshold, otherwise it is a leaf.
  
      .. versionadded:: 0.18
  
  presort : bool, optional (default=False)
      Whether to presort the data to speed up the finding of best splits in
      fitting. For the default settings of a decision tree on large
      datasets, setting this to true may slow down the training process.
      When using either a smaller dataset or a restricted depth, this may
      speed up the training.
  
  Attributes
  ----------
  classes_ : array of shape = [n_classes] or a list of such arrays
      The classes labels (single output problem),
      or a list of arrays of class labels (multi-output problem).
  
  feature_importances_ : array of shape = [n_features]
      The feature importances. The higher, the more important the
      feature. The importance of a feature is computed as the (normalized)
      total reduction of the criterion brought by that feature.  It is also
      known as the Gini importance [4]_.
  
  max_features_ : int,
      The inferred value of max_features.
  
  n_classes_ : int or list
      The number of classes (for single output problems),
      or a list containing the number of classes for each
      output (for multi-output problems).
  
  n_features_ : int
      The number of features when ``fit`` is performed.
  
  n_outputs_ : int
      The number of outputs when ``fit`` is performed.
  
  tree_ : Tree object
      The underlying Tree object.
  
  See also
  --------
  DecisionTreeRegressor
  
  References
  ----------
  
  .. [1] https://en.wikipedia.org/wiki/Decision_tree_learning
  
  .. [2] L. Breiman, J. Friedman, R. Olshen, and C. Stone, "Classification
         and Regression Trees", Wadsworth, Belmont, CA, 1984.
  
  .. [3] T. Hastie, R. Tibshirani and J. Friedman. "Elements of Statistical
         Learning", Springer, 2009.
  
  .. [4] L. Breiman, and A. Cutler, "Random Forests",
         http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
  
  Examples
  --------
  >>> from sklearn.datasets import load_iris
  >>> from sklearn.model_selection import cross_val_score
  >>> from sklearn.tree import DecisionTreeClassifier
  >>> clf = DecisionTreeClassifier(random_state=0)
  >>> iris = load_iris()
  >>> cross_val_score(clf, iris.data, iris.target, cv=10)
  ...                             # doctest: +SKIP
  ...
  array([ 1.     ,  0.93...,  0.86...,  0.93...,  0.93...,
          0.93...,  0.93...,  1.     ,  0.93...,  1.      ])
class_docstr_tok: ["A","decision","tree","classifier",".","Read","more","in","the",":","ref",":","`","User","Guide","<","tree",">","`",".","Parameters","--","--","--","--","--","criterion",":","string",",","optional","(","default=","''","gini","''",")","The","function","to","measure","the","quality","of","a","split",".","Supported","criteria","are","``","gini","''","for","the","Gini","impurity","and","``","entropy","''","for","the","information","gain",".","splitter",":","string",",","optional","(","default=","''","best","''",")","The","strategy","used","to","choose","the","split","at","each","node",".","Supported","strategies","are","``","best","''","to","choose","the","best","split","and","``","random","''","to","choose","the","best","random","split",".","max_features",":","int",",","float",",","string","or","None",",","optional","(","default=None",")","The","number","of","features","to","consider","when","looking","for","the","best","split",":","-","If","int",",","then","consider","`","max_features","`","features","at","each","split",".","-","If","float",",","then","`","max_features","`","is","a","percentage","and","`","int","(","max_features","*","n_features",")","`","features","are","considered","at","each","split",".","-","If","``","auto","''",",","then","`","max_features=sqrt","(","n_features",")","`",".","-","If","``","sqrt","''",",","then","`","max_features=sqrt","(","n_features",")","`",".","-","If","``","log2","''",",","then","`","max_features=log2","(","n_features",")","`",".","-","If","None",",","then","`","max_features=n_features","`",".","Note",":","the","search","for","a","split","does","not","stop","until","at","least","one","valid","partition","of","the","node","samples","is","found",",","even","if","it","requires","to","effectively","inspect","more","than","``","max_features","``","features",".","max_depth",":","int","or","None",",","optional","(","default=None",")","The","maximum","depth","of","the","tree",".","If","None",",","then","nodes","are","expanded","until","all","leaves","are","pure","or","until","all","leaves","contain","less","than","min_samples_split","samples",".","min_samples_split",":","int",",","float",",","optional","(","default=2",")","The","minimum","number","of","samples","required","to","split","an","internal","node",":","-","If","int",",","then","consider","`","min_samples_split","`","as","the","minimum","number",".","-","If","float",",","then","`","min_samples_split","`","is","a","percentage","and","`","ceil","(","min_samples_split","*","n_samples",")","`","are","the","minimum","number","of","samples","for","each","split",".","..","versionchanged",":",":","0.18","Added","float","values","for","percentages",".","min_samples_leaf",":","int",",","float",",","optional","(","default=1",")","The","minimum","number","of","samples","required","to","be","at","a","leaf","node",":","-","If","int",",","then","consider","`","min_samples_leaf","`","as","the","minimum","number",".","-","If","float",",","then","`","min_samples_leaf","`","is","a","percentage","and","`","ceil","(","min_samples_leaf","*","n_samples",")","`","are","the","minimum","number","of","samples","for","each","node",".","..","versionchanged",":",":","0.18","Added","float","values","for","percentages",".","min_weight_fraction_leaf",":","float",",","optional","(","default=0",".",")","The","minimum","weighted","fraction","of","the","sum","total","of","weights","(","of","all","the","input","samples",")","required","to","be","at","a","leaf","node",".","Samples","have","equal","weight","when","sample_weight","is","not","provided",".","max_leaf_nodes",":","int","or","None",",","optional","(","default=None",")","Grow","a","tree","with","``","max_leaf_nodes","``","in","best-first","fashion",".","Best","nodes","are","defined","as","relative","reduction","in","impurity",".","If","None","then","unlimited","number","of","leaf","nodes",".","class_weight",":","dict",",","list","of","dicts",",","``","balanced","''","or","None",",","optional","(","default=None",")","Weights","associated","with","classes","in","the","form","``","{","class_label",":","weight","}","``",".","If","not","given",",","all","classes","are","supposed","to","have","weight","one",".","For","multi-output","problems",",","a","list","of","dicts","can","be","provided","in","the","same","order","as","the","columns","of","y",".","The","``","balanced","''","mode","uses","the","values","of","y","to","automatically","adjust","weights","inversely","proportional","to","class","frequencies","in","the","input","data","as","``","n_samples","\/","(","n_classes","*","np.bincount","(","y",")",")","``","For","multi-output",",","the","weights","of","each","column","of","y","will","be","multiplied",".","Note","that","these","weights","will","be","multiplied","with","sample_weight","(","passed","through","the","fit","method",")","if","sample_weight","is","specified",".","random_state",":","int",",","RandomState","instance","or","None",",","optional","(","default=None",")","If","int",",","random_state","is","the","seed","used","by","the","random","number","generator",";","If","RandomState","instance",",","random_state","is","the","random","number","generator",";","If","None",",","the","random","number","generator","is","the","RandomState","instance","used","by","`","np.random","`",".","min_impurity_split",":","float",",","optional","(","default=1e-7",")","Threshold","for","early","stopping","in","tree","growth",".","A","node","will","split","if","its","impurity","is","above","the","threshold",",","otherwise","it","is","a","leaf",".","..","versionadded",":",":","0.18","presort",":","bool",",","optional","(","default=False",")","Whether","to","presort","the","data","to","speed","up","the","finding","of","best","splits","in","fitting",".","For","the","default","settings","of","a","decision","tree","on","large","datasets",",","setting","this","to","true","may","slow","down","the","training","process",".","When","using","either","a","smaller","dataset","or","a","restricted","depth",",","this","may","speed","up","the","training",".","Attributes","--","--","--","--","--","classes_",":","array","of","shape","=","[","n_classes","]","or","a","list","of","such","arrays","The","classes","labels","(","single","output","problem",")",",","or","a","list","of","arrays","of","class","labels","(","multi-output","problem",")",".","feature_importances_",":","array","of","shape","=","[","n_features","]","The","feature","importances",".","The","higher",",","the","more","important","the","feature",".","The","importance","of","a","feature","is","computed","as","the","(","normalized",")","total","reduction","of","the","criterion","brought","by","that","feature",".","It","is","also","known","as","the","Gini","importance","[","4","]","_.","max_features_",":","int",",","The","inferred","value","of","max_features",".","n_classes_",":","int","or","list","The","number","of","classes","(","for","single","output","problems",")",",","or","a","list","containing","the","number","of","classes","for","each","output","(","for","multi-output","problems",")",".","n_features_",":","int","The","number","of","features","when","``","fit","``","is","performed",".","n_outputs_",":","int","The","number","of","outputs","when","``","fit","``","is","performed",".","tree_",":","Tree","object","The","underlying","Tree","object",".","See","also","--","--","--","--","DecisionTreeRegressor","References","--","--","--","--","--","..","[","1","]","https",":","\/\/en.wikipedia.org\/wiki\/Decision_tree_learning","..","[","2","]","L.","Breiman",",","J.","Friedman",",","R.","Olshen",",","and","C.","Stone",",","``","Classification","and","Regression","Trees","''",",","Wadsworth",",","Belmont",",","CA",",","1984",".","..","[","3","]","T.","Hastie",",","R.","Tibshirani","and","J.","Friedman",".","``","Elements","of","Statistical","Learning","''",",","Springer",",","2009",".","..","[","4","]","L.","Breiman",",","and","A.","Cutler",",","``","Random","Forests","''",",","http",":","\/\/www.stat.berkeley.edu\/~breiman\/RandomForests\/cc_home.htm","Examples","--","--","--","--",">",">",">","from","sklearn.datasets","import","load_iris",">",">",">","from","sklearn.model_selection","import","cross_val_score",">",">",">","from","sklearn.tree","import","DecisionTreeClassifier",">",">",">","clf","=","DecisionTreeClassifier","(","random_state=0",")",">",">",">","iris","=","load_iris","(",")",">",">",">","cross_val_score","(","clf",",","iris.data",",","iris.target",",","cv=10",")","...","#","doctest",":","+SKIP","...","array","(","[","1.",",","0.93","...",",","0.86","...",",","0.93","...",",","0.93","...",",","0.93","...",",","0.93","...",",","1.",",","0.93","...",",","1",".","]",")"]
docstr: Predict class probabilities of the input samples X.
  
  The predicted class probability is the fraction of samples of the same
  class in a leaf.
  
  check_input : boolean, (default=True)
      Allow to bypass several input checking.
      Don't use this parameter unless you know what you do.
  
  Parameters
  ----------
  X : array-like or sparse matrix of shape = [n_samples, n_features]
      The input samples. Internally, it will be converted to
      ``dtype=np.float32`` and if a sparse matrix is provided
      to a sparse ``csr_matrix``.
  
  Returns
  -------
  p : array of shape = [n_samples, n_classes], or a list of n_outputs
      such arrays if n_outputs > 1.
      The class probabilities of the input samples. The order of the
      classes corresponds to that in the attribute `classes_`.
docstr_tok: ["Predict","class","probabilities","of","the","input","samples","X",".","The","predicted","class","probability","is","the","fraction","of","samples","of","the","same","class","in","a","leaf",".","check_input",":","boolean",",","(","default=True",")","Allow","to","bypass","several","input","checking",".","Do","n't","use","this","parameter","unless","you","know","what","you","do",".","Parameters","--","--","--","--","--","X",":","array-like","or","sparse","matrix","of","shape","=","[","n_samples",",","n_features","]","The","input","samples",".","Internally",",","it","will","be","converted","to","``","dtype=np.float32","``","and","if","a","sparse","matrix","is","provided","to","a","sparse","``","csr_matrix","``",".","Returns","--","--","--","-","p",":","array","of","shape","=","[","n_samples",",","n_classes","]",",","or","a","list","of","n_outputs","such","arrays","if","n_outputs",">","1",".","The","class","probabilities","of","the","input","samples",".","The","order","of","the","classes","corresponds","to","that","in","the","attribute","`","classes_","`","."]
code: def predict_proba(self, X, check_input=True):
      """Predict class probabilities of the input samples X.
  
      The predicted class probability is the fraction of samples of the same
      class in a leaf.
  
      check_input : boolean, (default=True)
          Allow to bypass several input checking.
          Don't use this parameter unless you know what you do.
  
      Parameters
      ----------
      X : array-like or sparse matrix of shape = [n_samples, n_features]
          The input samples. Internally, it will be converted to
          ``dtype=np.float32`` and if a sparse matrix is provided
          to a sparse ``csr_matrix``.
  
      Returns
      -------
      p : array of shape = [n_samples, n_classes], or a list of n_outputs
          such arrays if n_outputs > 1.
          The class probabilities of the input samples. The order of the
          classes corresponds to that in the attribute `classes_`.
      """
      X = self._validate_X_predict(X, check_input)
      proba = self.tree_.predict(X)
  
      if self.n_outputs_ == 1:
          proba = proba[:, : self.n_classes_]
          normalizer = proba.sum(axis=1)[:, np.newaxis]
          normalizer[normalizer == 0.0] = 1.0
          proba /= normalizer
  
          return proba
  
      else:
          all_proba = []
  
          for k in range(self.n_outputs_):
              proba_k = proba[:, k, : self.n_classes_[k]]
              normalizer = proba_k.sum(axis=1)[:, np.newaxis]
              normalizer[normalizer == 0.0] = 1.0
              proba_k /= normalizer
              all_proba.append(proba_k)
  
          return all_proba
  
imports: from __future__ import division
  import numbers
  from abc import ABCMeta
  from abc import abstractmethod
  from math import ceil
  import numpy
  from scipy.sparse import issparse
  from ..base import BaseEstimator
  from ..base import ClassifierMixin
  from ..base import RegressorMixin
  from ..externals import six
  from ..feature_selection.from_model import _LearntSelectorMixin
  from ..utils import check_array
  from ..utils import check_random_state
  from ..utils import compute_sample_weight
  from ..utils.multiclass import check_classification_targets
  from ..exceptions import NotFittedError
  from ._criterion import Criterion
  from ._splitter import Splitter
  from ._tree import DepthFirstTreeBuilder
  from ._tree import BestFirstTreeBuilder
  from ._tree import Tree
  from .None import _tree, _splitter, _criterion
label_desc: Use image node_id 3 for calling the DecisionTreeClassifier obj's underlying member method code with example usage: obj.predict_proba(X, check_input) and returns: proba, all_proba