code: def transform(self, blocks, y=None):
          
          preds = (self.kmeans.predict(make_weninger_features(blocks)) > 0).astype(int)
          return np.reshape(preds, (-1, 1))
docs: Computes the content to tag ratio per block, smooths the values, then
          predicts content (1) or not-content (0) using a fit k-means cluster model.
  
          Args:
              blocks (List[Block]): as output by :class:`Blockifier.blockify`
              y (None): This isn't used, it's only here for API consistency.
  
          Returns:
              :class:`np.ndarray`: 2D array of shape (len(feature_mat), 1), where
                  values are either 0 or 1, corresponding to the kmeans prediction
                  of content (1) or not-content (0).