【问题标题】:scikit learn test_data_split: ValueError: Found input variables with inconsistent numbers of samples:[4999, 5000]scikit learn test_data_split:ValueError:找到样本数量不一致的输入变量:[4999, 5000]
【发布时间】:2020-12-14 18:52:19
【问题描述】:

这是我的代码

print(len(image_dataset.data))
print(len(phylum_target))
X_train, X_test, y_train, y_test = train_test_split(image_dataset.data, phylum_target, test_size=0.2,random_state=109)

这是输出和错误

5000
5000
Traceback (most recent call last):
  File "Image_SVM_run_only.py", line 298, in <module>
    X_train_temp, X_test_temp, y_train_temp, y_test_temp = train_test_split(image_dataset.data, phylum_target, test_size=0.2,random_state=109)
  File "/root/anaconda3/envs/IBC/lib/python3.7/site-packages/sklearn/model_selection/_split.py", line 2127, in train_test_split
    arrays = indexable(*arrays)
  File "/root/anaconda3/envs/IBC/lib/python3.7/site-packages/sklearn/utils/validation.py", line 293, in indexable
    check_consistent_length(*result)
  File "/root/anaconda3/envs/IBC/lib/python3.7/site-packages/sklearn/utils/validation.py", line 257, in check_consistent_length
    " samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [4999, 5000]

即使训练数据和测试数据的长度相同,我还是遇到了这个错误。 请帮帮我T.T

【问题讨论】:

  • 不仅仅是长度,每个的长度/形状[0]是多少?
  • ` print(type(image_dataset.data)) print(type(phylum_target)) print(image_dataset.data.shape) print(phylum_target.shape) `&lt;class 'numpy.ndarray'&gt; &lt;class 'numpy.ndarray'&gt; (5000, 49152) (5000, 1)
  • image_dataset.data[0].shape 是 (49152,),phylum_target[0].shape 是 (1,)

标签: python scikit-learn train-test-split


【解决方案1】:

这是我可以从您的信息中辨别出的最小可重复示例,并且工作正常

import numpy as np
from sklearn.model_selection import train_test_split

X = np.zeros((5000, 49152))
y = np.zeros((5000, 1))
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=109)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)

【讨论】:

  • 您的代码有效,但我的仍然无效...感谢您的帮助
  • 没问题长湾,调试我想说只是从上面的代码中回溯并确保您的“image_dataset.data, phylum_target”对象确实与“X, y”中的“相同”上面的代码就在调用之前。也许你在某个时候不小心吃掉了一块,弹出或移除——别的什么??
  • 这似乎是数据问题,因为这个数据集来自一个非常大的数据集,并且由具有多处理的代码生成,我发现一些数据包含一些无效的字符串......虽然我不知道为什么它有“一些”无效的字符串,但错误消息只说一个区别......无论如何感谢您的帮助!
猜你喜欢
  • 2018-04-13
  • 2021-02-17
  • 2020-11-03
  • 2019-05-06
  • 2019-03-22
  • 2021-02-25
  • 2021-01-20
  • 2019-12-14
  • 2021-06-20
相关资源
最近更新 更多