[PYTHON] Setzen Sie die Anzahl der Hot-codierten Features auf den ursprünglichen Kategoriewert zurück

Der MovieLens-Datensatz war so umständlich zu verarbeiten, also als Memo

Was du machen willst

Der Datensatz wurde wie unten gezeigt im One-Hot-codierten Zustand übergeben

   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

Ich möchte vor der One-Hot-Codierung wie unten gezeigt zum kategorialen Status zurückkehren

   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

Weise

Bereiten Sie die folgende Funktion vor

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:
        #Lassen Sie nur diejenigen mit einem Wert von 1 oder mehr
        df_each = df[df[col] >= 1][[id_col, col]]
        #Ersetzen Sie den Wert durch den Kategoriewert
        df_each[col] = col

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

    #Doppelte Löschung
    df_concat = df_concat.drop_duplicates().reset_index(drop=True).sort_values(by=id_col)
    return df_concat

Wie nachstehend,

Wenn Sie bestehen

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)

Konvertiert in den ursprünglichen Kategoriewert

  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

Setzen Sie die Anzahl der Hot-codierten Features auf den ursprünglichen Kategoriewert zurück
Überprüfen Sie den Rückgabewert mit PEP 380
Über den Rückgabewert von pthread_mutex_init ()
Über den Rückgabewert des Histogramms.
Vorbereiten des Ladens des Originaldatensatzes
Verwenden Sie numpys .flatten () [0], um den Wert abzurufen
Mia Nanasawas Gesicht ist (ノ ´ □ `) ノ Auf das ursprüngliche schöne Gesicht wird keine Rauschverarbeitung angewendet
Achten Sie auf den Rückgabewert von __len__
Fügen Sie eine Abfrage zur analysierten URL hinzu und kehren Sie zur ursprünglichen URL zurück