我有一个相当大的CSV文件,其中包含亚马逊评论数据,我将其读入pandas数据框中。我想将数据拆分为80-20(训练-测试),但在这样做时,我希望确保拆分的数据比例地代表一列值(类别)的价值,即所有不同的评论类别都在训练和测试数据中按比例呈现。
数据如下:
**ReviewerID** **ReviewText** **Categories** **ProductId**
1212 good product Mobile 14444425
1233 will buy again drugs 324532
5432 not recomended dvd 789654123
我正在使用下面的代码来实现这个功能:
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
因为我对Python相对较新,所以我无法弄清我错在哪里或者这段代码是否会根据列类别分层。当我从train-test split中移除stratify选项和categories列时,它似乎能够正常工作。
感激不尽,希望得到任何帮助。
train_test_split
中使用y
之前,您尚未定义它。 - Quazi Marufur Rahman