class_docstr: Class to do biased second order random walks.
  
  Args:
      walk_length (int): Number of random walks.
      walk_number (int): Number of nodes in truncated walk.
      p (float): Return parameter (1/p transition probability) to move towards previous node.
      q (float): In-out parameter (1/q transition probability) to move away from previous node.
class_docstr_tok: ["Class","to","do","biased","second","order","random","walks",".","Args",":","walk_length","(","int",")",":","Number","of","random","walks",".","walk_number","(","int",")",":","Number","of","nodes","in","truncated","walk",".","p","(","float",")",":","Return","parameter","(","1\/p","transition","probability",")","to","move","towards","previous","node",".","q","(","float",")",":","In-out","parameter","(","1\/q","transition","probability",")","to","move","away","from","previous","node","."]
code: def __init__(
      self, walk_length: int, walk_number: int, p: float, q: float
  ):
      self.walk_length = walk_length
      self.walk_number = walk_number
  
      _check_value(p, "p")
      self.p = p
  
      _check_value(q, "q")
      self.q = q
  
imports: import random
  from functools import partial
  from typing import List, Callable
  import numpy
  import networkx
label_desc: Use image node_id 1 to create a new BiasedRandomWalker object  with example: obj = BiasedRandomWalker(walk_length, walk_number, p, q)