class_docstr: Perceptron classifier.
  
  Note that this implementation of the Perceptron expects binary class labels
  in {0, 1}.
  
  Parameters
  ------------
  eta : float (default: 0.1)
      Learning rate (between 0.0 and 1.0)
  epochs : int (default: 50)
      Number of passes over the training dataset.
      Prior to each epoch, the dataset is shuffled to prevent cycles.
  random_seed : int
      Random state for initializing random weights and shuffling.
  print_progress : int (default: 0)
      Prints progress in fitting to stderr.
      0: No output
      1: Epochs elapsed and cost
      2: 1 plus time elapsed
      3: 2 plus estimated time until completion
  
  Attributes
  -----------
  w_ : 2d-array, shape={n_features, 1}
    Model weights after fitting.
  b_ : 1d-array, shape={1,}
    Bias unit after fitting.
  cost_ : list
      Number of misclassifications in every epoch.
  
  Examples
  -----------
  For usage examples, please see
  https://rasbt.github.io/mlxtend/user_guide/classifier/Perceptron/
class_docstr_tok: ["Perceptron","classifier",".","Note","that","this","implementation","of","the","Perceptron","expects","binary","class","labels","in","{","0",",","1","}",".","Parameters","--","--","--","--","--","--","eta",":","float","(","default",":","0.1",")","Learning","rate","(","between","0.0","and","1.0",")","epochs",":","int","(","default",":","50",")","Number","of","passes","over","the","training","dataset",".","Prior","to","each","epoch",",","the","dataset","is","shuffled","to","prevent","cycles",".","random_seed",":","int","Random","state","for","initializing","random","weights","and","shuffling",".","print_progress",":","int","(","default",":","0",")","Prints","progress","in","fitting","to","stderr",".","0",":","No","output","1",":","Epochs","elapsed","and","cost","2",":","1","plus","time","elapsed","3",":","2","plus","estimated","time","until","completion","Attributes","--","--","--","--","--","-","w_",":","2d-array",",","shape=","{","n_features",",","1","}","Model","weights","after","fitting",".","b_",":","1d-array",",","shape=","{","1",",","}","Bias","unit","after","fitting",".","cost_",":","list","Number","of","misclassifications","in","every","epoch",".","Examples","--","--","--","--","--","-","For","usage","examples",",","please","see","https",":","\/\/rasbt.github.io\/mlxtend\/user_guide\/classifier\/Perceptron\/"]
code: def _fit(self, X, y, init_params=True):
      self._check_target_array(y, allowed={(0, 1)})
      y_data = np.where(y == 0, -1.0, 1.0)
  
      if init_params:
          self.b_, self.w_ = self._init_params(
              weights_shape=(X.shape[1], 1),
              bias_shape=(1,),
              random_seed=self.random_seed,
          )
          self.cost_ = []
  
      self.init_time_ = time()
      rgen = np.random.RandomState(self.random_seed)
      for i in range(self.epochs):
          errors = 0
  
          for idx in self._yield_minibatches_idx(
              rgen=rgen,
              n_batches=y_data.shape[0],
              data_ary=y_data,
              shuffle=True,
          ):
              update = self.eta * (
                  y_data[idx] - self._to_classlabels(X[idx])
              )
              self.w_ += (update * X[idx]).reshape(self.w_.shape)
              self.b_ += update
              errors += int(update != 0.0)
  
          if self.print_progress:
              self._print_progress(
                  iteration=i + 1, n_iter=self.epochs, cost=errors
              )
          self.cost_.append(errors)
      return self
  
file_path: mlxtend/mlxtend/classifier/perceptron.py
imports: from time import time
  import numpy
  from .._base import _BaseModel, _Classifier, _IterativeModel
label_desc: Use image node_id 2 for calling the Perceptron obj's underlying member method code with example usage: obj._fit(X, y, init_params) and returns: self