首页 > 解决方案 > 如何解决 Python 中的“ValueError:找到样本数量不一致的输入变量”问题

问题描述

我有两个文件,即data[3806, 2] 和target[4039, 2]。我的目标是将这些文件拆分为训练和测试数据集。我已经尝试过这样做:

from sklearn.model_selection import train_test_split
data_train, data_test, target_train, target_test = train_test_split(data, target, test_size=0.2, random_state=0)

但是,它给出了错误:

ValueError: Found input variables with inconsistent numbers of samples: [3806, 4039]

为了运行分类算法,这个问题的最佳解决方案是什么?

标签: classificationtext-classificationsupervised-learning

解决方案


关于做什么有一个困惑train_test_split:它的目标是在训练集和测试集之间分割数据。通常输入数据由两个数组组成:X对于特征,y对于标签,函数随机选择给定比例的行作为测试集,剩下的作为训练集。例子:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

用于测试集的行与X和相同y,因此输出数组仍然包含每个实例的正确标签:例如,在两个数组中都选择了第 3、5、6、8 行,第 3 行的特征仍然对应于第 3 行的标签。这就是为什么两个输入数组必须具有相同的长度

在您的代码中,您给出了两个长度不同的数组,因此会出现错误。

  • 要么你想使用其中一个数组作为训练集,另一个作为测试集,在这种情况下你不需要调用train_test_split,因为你的数据已经被分割了。
  • 或者您想从这两个数据集的并集中随机选择一个测试集,在这种情况下,您应该在调用train_test_split.

推荐阅读