https://drive.google.com/file/d/1y5DYn0dGoSbC22xowBq2d4po6h1JxcTQ/view?usp=sharing
Jede Zeile repräsentiert die Benutzer-ID und jede Spalte repräsentiert den vom Benutzer gekauften Artikel. Die Anzahl der Spalten ist die Anzahl der Käufe des Benutzers mit den am häufigsten gekauften Artikeln. Daher wird NaN in das Feld eingegeben.
Befestigen Sie jede Spalte an einem bestimmten Artikel und geben Sie an, ob jeder Benutzer sie bis 1/0 gekauft hat
Verwenden Sie den MultiLabel Binarizer von scikit-learn. Sei df der Datenrahmen vor der Konvertierung. Die Ausgabe nach der Konvertierung ist df_trans.
from sklearn.preprocessing import MultiLabelBinarizer
df = df.fillna("none")
mlb = MultiLabelBinarizer()
result = mlb.fit_transform(df.values)
df_trans = pd.DataFrame(result, columns = mlb.classes_).drop('none', axis=1)
Wenn NaN im Datenrahmen enthalten ist, tritt in MultiLabel Binarizer ein Fehler auf. Konvertieren Sie ihn daher in eine entsprechende Zeichenfolge (er muss keine sein, wenn er nicht dupliziert wird).
Erstellen Sie ein MultiLabelBinarizer-Objekt und rufen Sie die Methode fit_transform auf. Geben Sie df.values im Argument im Format numpy.array an.
Der Spaltenname (Elementname) kann mit mlb.classes_ abgerufen werden.
Löschen Sie schließlich keine mit der drop-Methode, um die konvertierte Tabelle abzurufen.
Recommended Posts