Update all computed attributes. It is only needed if you need to access
        computed attributes after :meth:`patrial_fit` was called.

def recalculate_attributes(self, force=False):
        # type: (bool) -> None
        """
        Update all computed attributes. It is only needed if you need to access
        computed attributes after :meth:`patrial_fit` was called.
        """
        if not self._attributes_dirty and not force:
            return
        terms = [term for term, _ in self._term_counts.most_common()]
        if six.PY2:
            terms = np.array(terms, dtype=np.object)
        else:
            terms = np.array(terms)
        if len(terms):
            indices, signs = _get_indices_and_signs(self.hasher, terms)
        else:
            indices, signs = np.array([]), np.array([])
        self.terms_ = terms  # type: np.ndarray
        self.term_columns_ = indices
        self.term_signs_ = signs
        self.collisions_ = _get_collisions(indices)
        self.column_signs_ = self._get_column_signs()
        self._attributes_dirty = False