cognet.model API documentation

# Module `cognet.model`

Expand source code

    from quasinet.qnet import Qnet, load_qnet, save_qnet
    from quasinet.qnet import export_qnet_tree, export_qnet_graph
    from cognet.util import assert_None
    class model:
        """Facilitate training and constructing Qnet
        """

        def __init__(self):
            """Init
            """
            self.myQnet = None
            self.features = None
            self.samples = None
            self.immutable_vars = None
            self.mutable_vars = None

        def fit(self,
                featurenames=None,
                samples=None,
                data_obj=None,
                njobs=4):
            """[summary]

            Args:
              featurenames ([type]): [description]
              samples ([type], optional): [description]. Defaults to None.
              data_obj ([type], optional): [description]. Defaults to None.
              njobs (int, optional): [description]. Defaults to 2.

            Raises:
                ValueError: [description]
                ValueError: [description]
            """
            num_None = assert_None([featurenames,samples,data_obj], raise_error=False)
            if num_None == 0:
                raise ValueError("input either samples and features or data object, not both!")
            elif data_obj is not None:
                featurenames, samples=data_obj.train() # returns the training data
                self.immutable_vars, self.mutable_vars = data_obj.immutable_vars, data_obj.mutable_vars
            elif num_None > 1:
                raise ValueError("input both samples and features or data object!")
            self.myQnet = Qnet(n_jobs=njobs, feature_names=featurenames)
            print("qnet")
            self.myQnet.fit(samples)
            print("done")
            self.samples = samples
            self.features = featurenames

        def save(self,
                 file_path=None):
            """[summary]

            Args:
              file_path ([type], optional): [description]. Defaults to None.
            """
            assert_None([self.myQnet])
            if file_path is None:
                file_path = 'tmp_Qnet.joblib'
            save_qnet(self.myQnet, file_path)

        def load(self,
                 file_path):
            """[summary]

            Args:
              file_path ([type]): [description]

            Returns:
              [type]: [description]
            """
            ## can also directly use load from joblib, thoughts?
            print("updating")
            self.myQnet = load_qnet(file_path)
            self.features = self.myQnet.feature_names
            return self.myQnet

        def export_dot(self,
                       filename,
                       index=[3],
                       path='',
                       generate_trees=False,
                       threhold=0.2):
            """[summary]

            Args:
                filename ([type]): [description]
                index (list, optional): [description]. Defaults to [6].
                path (str, optional): [description]. Defaults to ''.
                generate_trees (bool, optional): [description]. Defaults to False.
                threhold (float, optional): [description]. Defaults to 0.2.
            """
            if not generate_trees:
                export_qnet_graph(self.myQnet,
                                  threshold, path+filename)
            else:
                for i in index:
                    export_qnet_tree(self.myQnet,
                                     i, filename)

## Classes

`class model`

  Facilitate training and constructing Qnet

  Init

  Expand source code

      class model:
          """Facilitate training and constructing Qnet
          """

          def __init__(self):
              """Init
              """
              self.myQnet = None
              self.features = None
              self.samples = None
              self.immutable_vars = None
              self.mutable_vars = None

          def fit(self,
                  featurenames=None,
                  samples=None,
                  data_obj=None,
                  njobs=4):
              """[summary]

              Args:
                featurenames ([type]): [description]
                samples ([type], optional): [description]. Defaults to None.
                data_obj ([type], optional): [description]. Defaults to None.
                njobs (int, optional): [description]. Defaults to 2.

              Raises:
                  ValueError: [description]
                  ValueError: [description]
              """
              num_None = assert_None([featurenames,samples,data_obj], raise_error=False)
              if num_None == 0:
                  raise ValueError("input either samples and features or data object, not both!")
              elif data_obj is not None:
                  featurenames, samples=data_obj.train() # returns the training data
                  self.immutable_vars, self.mutable_vars = data_obj.immutable_vars, data_obj.mutable_vars
              elif num_None > 1:
                  raise ValueError("input both samples and features or data object!")
              self.myQnet = Qnet(n_jobs=njobs, feature_names=featurenames)
              print("qnet")
              self.myQnet.fit(samples)
              print("done")
              self.samples = samples
              self.features = featurenames

          def save(self,
                   file_path=None):
              """[summary]

              Args:
                file_path ([type], optional): [description]. Defaults to None.
              """
              assert_None([self.myQnet])
              if file_path is None:
                  file_path = 'tmp_Qnet.joblib'
              save_qnet(self.myQnet, file_path)

          def load(self,
                   file_path):
              """[summary]

              Args:
                file_path ([type]): [description]

              Returns:
                [type]: [description]
              """
              ## can also directly use load from joblib, thoughts?
              print("updating")
              self.myQnet = load_qnet(file_path)
              self.features = self.myQnet.feature_names
              return self.myQnet

          def export_dot(self,
                         filename,
                         index=[3],
                         path='',
                         generate_trees=False,
                         threhold=0.2):
              """[summary]

              Args:
                  filename ([type]): [description]
                  index (list, optional): [description]. Defaults to [6].
                  path (str, optional): [description]. Defaults to ''.
                  generate_trees (bool, optional): [description]. Defaults to False.
                  threhold (float, optional): [description]. Defaults to 0.2.
              """
              if not generate_trees:
                  export_qnet_graph(self.myQnet,
                                    threshold, path+filename)
              else:
                  for i in index:
                      export_qnet_tree(self.myQnet,
                                       i, filename)

  ### Methods

  `def export_dot(self, filename, index=[3], path='', generate_trees=False, threhold=0.2)`

    [summary]

    ## Args

    `filename` :`[type]`
      [description]
    `index` :`list`, optional
      [description]. Defaults to [6].
    `path` :`str`, optional
      [description]. Defaults to ''.
    `generate_trees` :`bool`, optional
      [description]. Defaults to False.
    `threhold` :`float`, optional
      [description]. Defaults to 0.2.
    Expand source code

        def export_dot(self,
                       filename,
                       index=[3],
                       path='',
                       generate_trees=False,
                       threhold=0.2):
            """[summary]

            Args:
                filename ([type]): [description]
                index (list, optional): [description]. Defaults to [6].
                path (str, optional): [description]. Defaults to ''.
                generate_trees (bool, optional): [description]. Defaults to False.
                threhold (float, optional): [description]. Defaults to 0.2.
            """
            if not generate_trees:
                export_qnet_graph(self.myQnet,
                                  threshold, path+filename)
            else:
                for i in index:
                    export_qnet_tree(self.myQnet,
                                     i, filename)

  `def fit(self, featurenames=None, samples=None, data_obj=None, njobs=4)`

    [summary]

    ## Args

    `featurenames` :`[type]`
      [description]
    `samples` :`[type]`, optional
      [description]. Defaults to None.
    `data_obj` :`[type]`, optional
      [description]. Defaults to None.
    `njobs` :`int`, optional
      [description]. Defaults to 2.

    ## Raises

    `ValueError`
      [description]
    `ValueError`
      [description]
    Expand source code

        def fit(self,
                featurenames=None,
                samples=None,
                data_obj=None,
                njobs=4):
            """[summary]

            Args:
              featurenames ([type]): [description]
              samples ([type], optional): [description]. Defaults to None.
              data_obj ([type], optional): [description]. Defaults to None.
              njobs (int, optional): [description]. Defaults to 2.

            Raises:
                ValueError: [description]
                ValueError: [description]
            """
            num_None = assert_None([featurenames,samples,data_obj], raise_error=False)
            if num_None == 0:
                raise ValueError("input either samples and features or data object, not both!")
            elif data_obj is not None:
                featurenames, samples=data_obj.train() # returns the training data
                self.immutable_vars, self.mutable_vars = data_obj.immutable_vars, data_obj.mutable_vars
            elif num_None > 1:
                raise ValueError("input both samples and features or data object!")
            self.myQnet = Qnet(n_jobs=njobs, feature_names=featurenames)
            print("qnet")
            self.myQnet.fit(samples)
            print("done")
            self.samples = samples
            self.features = featurenames

  `def load(self, file_path)`

    [summary]

    ## Args

    `file_path` :`[type]`
      [description]

    ## Returns

    `[type]`
      [description]
    Expand source code

        def load(self,
                 file_path):
            """[summary]

            Args:
              file_path ([type]): [description]

            Returns:
              [type]: [description]
            """
            ## can also directly use load from joblib, thoughts?
            print("updating")
            self.myQnet = load_qnet(file_path)
            self.features = self.myQnet.feature_names
            return self.myQnet

  `def save(self, file_path=None)`

    [summary]

    ## Args

    `file_path` :`[type]`, optional
      [description]. Defaults to None.
    Expand source code

        def save(self,
                 file_path=None):
            """[summary]

            Args:
              file_path ([type], optional): [description]. Defaults to None.
            """
            assert_None([self.myQnet])
            if file_path is None:
                file_path = 'tmp_Qnet.joblib'
            save_qnet(self.myQnet, file_path)