code: def lf_empirical_accuracies(L, Y):
      
      # Assume labeled set is small, work with dense matrices
      Y = arraylike_to_numpy(Y)
      L = L.toarray()
      X = np.where(L == 0, 0, np.where(L == np.vstack([Y] * L.shape[1]).T, 1, -1))
      return 0.5 * (X.sum(axis=0) / (L != 0).sum(axis=0) + 1)
docs: Return the **empirical accuracy** against a set of labels Y (e.g. dev
      set) for each LF.
      Args:
          L: an n x m scipy.sparse matrix where L_{i,j} is the label given by the
              jth LF to the ith candidate
          Y: an [n] or [n, 1] np.ndarray of gold labels