[PYTHON] Renvoie la quantité d'entités encodées à chaud à la valeur de catégorie d'origine

Le jeu de données movieLens était difficile à traiter comme celui-ci, donc comme mémo

Chose que tu veux faire

L'ensemble de données passé dans l'état encodé à chaud comme indiqué ci-dessous

   movie_id  action  horror  romance  sf
0         1       1       0        0   0
1         2       0       0        1   0
2         2       1       0        0   0
3         3       0       0        0   1
4         3       1       0        0   0
5         4       0       1        0   0
6         5       0       0        0   1
7         5       0       1        0   0
8         5       1       0        0   0

Je veux revenir à l'état catégorique avant l'encodage à chaud comme indiqué ci-dessous

   movie_id    genre
0         1   action
1         2  romance
2         2   action
3         3       sf
4         3   action
5         4   horror
6         5       sf
7         5   horror
8         5   action

manière

Préparez la fonction suivante

def convert_onehot_to_category(df, id_col, one_hot_columns, category_col='category'):
    df_concat = pd.DataFrame(columns=[id_col, category_col])
    for col in one_hot_columns:
        #Ne laissez que ceux avec une valeur de 1 ou plus
        df_each = df[df[col] >= 1][[id_col, col]]
        #Remplacer la valeur par la valeur de la catégorie
        df_each[col] = col

        df_each.columns = [id_col, category_col]
        df_concat = pd.concat([df_concat, df_each], axis=0)

    #Suppression en double
    df_concat = df_concat.drop_duplicates().reset_index(drop=True).sort_values(by=id_col)
    return df_concat

Comme ci-dessous,

--Nom de la colonne après l'encodage à chaud --Colonne contenant l'identifiant --Nom de la colonne après conversion en valeur de catégorie

Si tu réussis

genres = ['action', 'romance', 'sf', 'horror']
id_col = 'movie_id'
category_col = 'genre'

df_category = convert_onehot_to_category(df_onehot, id_col=id_col, one_hot_columns=genres, category_col=category_col)

print(df_category)

Convertit à la valeur de la catégorie d'origine

  movie_id    genre
0        1   action
1        2   action
4        2  romance
2        3   action
5        3       sf
7        4   horror
3        5   action
6        5       sf
8        5   horror

Recommended Posts

Renvoie la quantité d'entités encodées à chaud à la valeur de catégorie d'origine
Vérifiez la valeur de retour avec PEP 380
À propos de la valeur de retour de pthread_mutex_init ()
À propos de la valeur de retour de l'histogramme.
Préparation du chargement du jeu de données d'origine
Utilisez .flatten () [0] de numpy pour récupérer la valeur
Le visage de Mia Nanasawa est (ノ ´ □ `) ノ Aucun traitement de bruit n'est appliqué au beau visage d'origine
Attention à la valeur de retour de __len__
Ajouter une requête à l'URL analysée par URL et revenir à l'URL d'origine