def _process_user_fea(self):
        """

        Parameters
        ----------
        user_info : pd.DataFrame
        name : str
        For ml-100k and ml-1m, the column name is ['id', 'gender', 'age', 'occupation', 'zip_code'].
            We take the age, gender, and the one-hot encoding of the occupation as the user features.
        For ml-10m, there is no user feature and we set the feature to be a single zero.

        Returns
        -------
        user_features : np.ndarray

        """
        if self._name == "ml-100k" or self._name == "ml-1m":
            ages = self.user_info["age"].values.astype(np.float32)
            gender = (self.user_info["gender"] == "F").values.astype(np.float32)
            all_occupations = set(self.user_info["occupation"])
            occupation_map = {ele: i for i, ele in enumerate(all_occupations)}
            occupation_one_hot = np.zeros(
                shape=(self.user_info.shape[0], len(all_occupations)),
                dtype=np.float32,
            )
            occupation_one_hot[
                np.arange(self.user_info.shape[0]),
                np.array(
                    [
                        occupation_map[ele]
                        for ele in self.user_info["occupation"]
                    ]
                ),
            ] = 1
            user_features = np.concatenate(
                [
                    ages.reshape((self.user_info.shape[0], 1)) / 50.0,
                    gender.reshape((self.user_info.shape[0], 1)),
                    occupation_one_hot,
                ],
                axis=1,
            )
        elif self._name == "ml-10m":
            user_features = np.zeros(
                shape=(self.user_info.shape[0], 1), dtype=np.float32
            )
        else:
            raise NotImplementedError
        return user_features


        Parameters
        ----------
        user_info : pd.DataFrame
        name : str
        For ml-100k and ml-1m, the column name is ['id', 'gender', 'age', 'occupation', 'zip_code'].
            We take the age, gender, and the one-hot encoding of the occupation as the user features.
        For ml-10m, there is no user feature and we set the feature to be a single zero.

        Returns
        -------
        user_features : np.ndarray

        
examples/pytorch/gcmc/data.py