code: def row_coordinates(self, X):
      # Separate numerical columns from categorical columns
      X_num = X[self.num_cols_].copy()
      X_cat = X[self.cat_cols_]
  
      # Preprocess numerical columns
      X_num[:] = self.num_scaler_.transform(X_num)
  
      # Preprocess categorical columns
      X_cat = pd.DataFrame.sparse.from_spmatrix(
          self.cat_scaler_.transform(X_cat),
          index=X_cat.index,
          columns=self.cat_scaler_.get_feature_names_out(
              self.cat_cols_
          ),
      )
      prop = X_cat.sum() / X_cat.sum().sum() * 2
      X_cat = X_cat.sub(X_cat.mean(axis="rows")).div(
          prop**0.5, axis="columns"
      )
  
      Z = pd.concat([X_num, X_cat], axis=1)
  
      return super().row_coordinates(Z)
  
file_path: prince/prince/famd.py
imports: from __future__ import annotations
  import numpy
  import pandas
  import sklearn.utils
  from sklearn import preprocessing
  from prince import pca, utils
label_desc: Use image node_id 4 for calling the FAMD obj's underlying member method code with example usage: obj.row_coordinates(X) and returns: super