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 danstrain_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
Vous devez vous connecter pour publier un commentaire.
Le long de l'API docs, je pense que vous devez essayer comme
X_train, X_test, y_train, y_test = train_test_split(Meta_X, Meta_Y, test_size = 0.2, stratify=Meta_Y)
.Meta_X
,Meta_Y
doit être correctement attribué par vous(je pense queMeta_Y
devrait êtreMeta.categories
en fonction de votre code).train_test_split
est obsolète (vérifier avec le lien)