У меня есть довольно большой файл CSV, содержащий данные обзора amazon, которые я прочитал в рамке данных pandas. Я хочу разбить данные 80-20 (тест поездов), но при этом я хочу убедиться, что разделенные данные пропорционально представляют значения одного столбца (категории), т. Е. Вся другая категория отзывов присутствует как в поезде и тестовые данные пропорционально.sklearn стратифицированная выборка на основе столбца
Данные выглядит следующим образом:
**ReviewerID** **ReviewText** **Categories** **ProductId**
1212 good product Mobile 14444425
1233 will buy again drugs 324532
5432 not recomended dvd 789654123
Im используя следующий код, чтобы сделать это:
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)
это дает следующее сообщение об ошибке
NameError: name 'y' is not defined
Как я относительно new to python Я не могу понять, что я делаю неправильно, или этот код будет стратифицировать на основе категорий столбцов. Кажется, что он отлично работает, когда я удаляю параметр stratify, а также столбцы категорий из split-test split.
Любая помощь будет оценена по достоинству.
Вы еще не определили 'y', прежде чем использовать его в' train_test_split'. – qmaruf
Вам нужно определить переменную y раньше. На странице sklearn, stratify: array-like или None (по умолчанию None) Если нет None, данные разбиваются по стратифицированному модулю, используя это как массив меток. Значит, у вас должны быть ярлыки, которые вы используете. – nEO
категории - это ваш y, и вам необходимо разделить данные (X и Y). Вы не делаете разделения на данные прямо сейчас – nEO