gpt4 book ai didi

python - 基于列的sklearn分层抽样

转载 作者:太空狗 更新时间:2023-10-29 17:25:03 28 4
gpt4 key购买 nike

我有一个相当大的 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 的新手,所以我不知道自己做错了什么,也不知道这段代码是否会根据列类别进行分层。当我从训练测试拆分中删除分层选项和类别列时,它似乎工作正常。

我们将不胜感激。

最佳答案

    >>> import pandas as pd
>>> Meta = pd.read_csv('C:\\Users\\*****\\Downloads\\so\\Book1.csv')
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
>>> y = Meta.pop('Categories')
>>> Meta
ReviewerID ReviewText ProductId
0 1212 good product 14444425
1 1233 will buy again 324532
2 5432 not recomended 789654123
>>> y
0 Mobile
1 drugs
2 dvd
Name: Categories, dtype: object
>>> X = Meta
>>> X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42, stratify=y)
>>> X_test
ReviewerID ReviewText ProductId
0 1212 good product 14444425

关于python - 基于列的sklearn分层抽样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36997619/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com