sklearn échantillonnage stratifié en fonction d'une colonne

J'ai un assez gros fichier CSV contenant amazon examen des données que j'ai lu dans un des pandas bloc de données. Je veux diviser les données 80-20(train-test) mais en le faisant je veux m'assurer que la répartition des données est, proportionnellement, représentant les valeurs de la colonne (Catégories), j'.e pour tous les différents types de commentaires sont présents à la fois dans la formation et le test de données proportionnellement.

Les données ressemble à ceci:

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

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

Im en utilisant le code suivant pour le faire:

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)

il donne l'erreur suivante

NameError: name 'y' is not defined

Comme je suis relativement nouveau pour python, je ne peux pas comprendre ce que je fais mal ou si ce code permet de stratifier la colonne en fonction de catégories. Il semble que cela fonctionne bien quand j'ai enlever le stratifier option, ainsi que les catégories de la colonne de train-test de split.

Toute aide sera appréciée.

  • Vous n'avez pas défini de y avant de l'utiliser dans train_test_split.
  • Vous devez définir la variable y avant de. À partir de la sklearn page, stratifier : semblable au tableau ou Aucun (None par défaut) sinon Aucune, de données est divisé en un stratifié de la mode, à l'aide de ce que les étiquettes de tableau. Donc y avait à les étiquettes que vous utilisez.
  • les catégories est votre y et vous avez besoin de partager les données (X et Y). Tu ne fais pas de split sur les données dès maintenant
  • ajout de la solution ci-dessous