gpt4 book ai didi

python - sklearn train_test_split - ValueError : Found input variables with inconsistent numbers of samples

转载 作者:行者123 更新时间:2023-12-05 02:51:54 28 4
gpt4 key购买 nike

我有一个多标签分类问题,为此我在网上查看并发现对于标签的单热编码,最好使用 MultiLabelBinarizer

我将其用于我的标签(我将其与数据集本身分开),如下所示:

ohe = MultiLabelBinarizer()
labels = ohe.fit_transform(labels)
train, test, train_labels, test_labels = train_test_split(dataset, labels, test_size=0.2) #80% train split

但它抛出以下错误:

Traceback (most recent call last): 
File "learn.py", line 114, in <module>
train, test, train_labels, test_labels = train_test_split(dataset, labels, test_size=0.2) #80% train split
File "C:\Users\xwb18152\AppData\Roaming\Python\Python38\site-packages\sklearn\model_selection\_split.py", line 2127,
in train_test_split
arrays = indexable(*arrays)
File "C:\Users\xwb18152\AppData\Roaming\Python\Python38\site-packages\sklearn\utils\validation.py", line 293, in indexable
check_consistent_length(*result)
File "C:\Users\xwb18152\AppData\Roaming\Python\Python38\site-packages\sklearn\utils\validation.py", line 256, in check_consistent_length
raise ValueError("Found input variables with inconsistent numbers of"
ValueError: Found input variables with inconsistent numbers of samples: [83292, 5]

--

编辑: 标签数据集如下所示(忽略 Interval 列,它不应该存在并且实际上不计入行中——不确定为什么?) :

          Movement  Distance  Speed  Delay  Loss 
Interval
0 1 1 25 0 0
2 1 1 25 0 0
4 1 1 25 0 0
6 1 1 25 0 0
8 1 1 25 0 0
... ... ... ... ... ...
260 3 5 50 0 0
262 3 5 50 0 0
264 3 5 50 0 0
266 3 5 50 0 0
268 3 5 50 0 0

由此可见,这是一个多标签多类分类问题。 Binarizer前后datasetlabelsshape如下:

             Before             After
dataset (83292, 15) (83292, 15)
labels (83292, 5) (5, 18)

最佳答案

正如您所说,标签的原始形状是 (83292, 5),一旦您应用了 MultiLabelBinarizer,它就变成了 (5, 18)

train_test_split(X, y) 函数期望 X 和 y 应该有相同的行。例如:83292 数据点在您的 X 中可用,相应的数据点标签应该在您的 y 变量中可用。因此,在您的情况下,它应该是 Xy 形状应该是 (83292, 15)(83292, 18).

试试这个:您的 MultiLabelBinarizer 输出在此处具有错误的维度。因此,如果您的 labels 是一个数据框对象,那么您应该应用 mlb.fit_transform(labels.values.tolist())。这将产生与此处输出相同的行数 83292

您的标签示例应类似于以下格式:

您的y 输入可以像列表列表 或具有一列具有值列表 的数据框。确保 X 和 y 的行数相同。您可以像下面的格式一样表示多标签多类 y 变量。或者 dataframe.shape 应该是 (no_of_rows, 1)

[[1, 1, 25, 0, 0],
[1, 1, 25, 0, 0],
[1, 1, 25, 0, 0],
[1, 1, 25, 0, 0],
[1, 1, 25, 0, 0],
[3, 5, 50, 0, 0],
[3, 5, 50, 0, 0],
[3, 5, 50, 0, 0],
[3, 5, 50, 0, 0],
[3, 5, 50, 0, 0]]

关于python - sklearn train_test_split - ValueError : Found input variables with inconsistent numbers of samples,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62894945/

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