sklearn geschichtete Stichprobe basierend auf einer Spalte

Ich habe eine ziemlich große CSV-Datei mit Amazon Review-Daten, die ich in einen Pandas-Datenrahmen eingelesen habe. Ich möchte die Daten zwischen 80 und 20 teilen (Zugtest), aber dabei möchte ich sicherstellen, dass die geteilten Daten proportional zu den Werten einer Spalte (Kategorien) sind, dh alle verschiedenen Kategorien von Bewertungen sind in beiden Zügen vorhanden und Testdaten proportional.

Die Daten sehen folgendermaßen aus:

**ReviewerID**       **ReviewText**        **Categories**       **ProductId**

1212                   good product         Mobile               14444425
1233                   will buy again       drugs                324532
5432                   not recomended       dvd                  789654123 

Verwenden Sie dazu den folgenden Code:

import pandas as pd
Meta = pd.read_csv('C:\\Users\\xyz\\Desktop\\WM Project\\Joined.csv')
import numpy as np
from sklearn.cross_validation import train_test_split

train, test = train_test_split(Meta.categories, test_size = 0.2, stratify=y)

it gibt den folgenden Fehler aus

NameError: name 'y' is not defined

Als ich relativ neu in Python bin, kann ich nicht herausfinden, was ich falsch mache oder ob dieser Code basierend auf Spaltenkategorien geschichtet wird. Es scheint gut zu funktionieren, wenn ich die Stratify-Option sowie die Categories-Spalte aus dem Train-Test-Split entferne.

Jede Hilfe wird geschätzt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage