如何修复重塑我的数据集以进行交叉验证?

Posted

技术标签:

【中文标题】如何修复重塑我的数据集以进行交叉验证?【英文标题】:How do i fix reshaping my dataset for cross validation? 【发布时间】:2017-02-09 19:20:16 【问题描述】:
x_train:(153347,53)
x_test:(29039,52)
y:(153347,)

我正在使用 sklearn。为了交叉验证和重塑我的数据集,我做了:

x_train, x_test, y_train, y_test = cross_validation.train_test_split(
x, y, test_size=0.3)

x_train = np.pad(x, [(0,0)], mode='constant')
x_test = np.pad(x, [(0,0)], mode='constant')
y = np.pad(y, [(0,0)], mode='constant')
x_train = np.arange(8127391).reshape((-1,1))
c = x.T
np.all(x_train == c)
x_test = np.arange(1510028).reshape((-1,1))
c2 = x.T
np.all(x_test == c2)
y = np.arange(153347).reshape((-1,1))
c3 = x.T
np.all(y == c3)

我的错误信息是:ValueError: Found arrays with contrast numbers of samples: [2 153347]

我不确定在这种情况下我是否需要填充我的数据集并且重塑不起作用。关于如何解决此问题的任何想法?

【问题讨论】:

也许你应该提到你使用 sklearn 并描述更多你在做什么。否则,很可能会被忽略。 好的,谢谢你的提示。 这条消息来自哪里?看来您只是传递了一个转置的y 【参考方案1】:

我们在这里看到的很少,我相信对cross_validation.train_test_split 的调用会转储,因为两个向量的长度不重合。因此,对于每个 X(我们观察到的数据元组),您都需要一个 Y(作为结果观察到的数据点)。

至少这会导致上面显示的错误。

您绝对应该改进问题的表述。非常喜欢。

问候,弗里克

【讨论】:

我明白你在说什么,问题是调用 y_test 因为它在数据框中不存在。谢谢! 如果这解决了问题你能接受这个解决方案吗,谢谢 最后一件事,如果你能帮忙的话。我需要合并单独的训练和测试文件来执行交叉验证吗?我将 csv 作为火车 csv 和测试 csv。我可以将它们合并为一个并基于将我的数据集分隔为 x 和 y 来编程吗? 是的,至少这是一种实现交叉验证的方法。但是 Sklearn 通过将整个学习和测试集传递给函数“cross_val_score”为您提供了一种非常方便的方法。然后,此函数将整个集合拆分为一系列不相交的学习和测试集,并对分数进行平均。

以上是关于如何修复重塑我的数据集以进行交叉验证?的主要内容,如果未能解决你的问题,请参考以下文章

如何重塑3通道数据集以输入神经网络

我应该如何拆分我的数据以进行交叉验证和网格搜索?

重塑数据集以正确大小

使用交叉验证时如何使用测试数据集进行预测?

weka 中用于推文分类的 N 折交叉验证

如何拆分自己的数据集以在 Tensorflow CNN 中进行训练和验证