首页 > 解决方案 > 在 train_test_split 之后运行 ratios_ztest

问题描述

好吧,我得到了一个数据集,在将其拆分为训练和测试数据后,train_test_split我试图运行一个proportion_ztest反对y_trainy_test

(test_stat, p_value) = proportions_z_test(y_train, y_test, alternative='two-sided')

但 Python 一直在抛出ValueError: operands could not be broadast together with shapes (4254,) (1123,).

我的 Y 目标变量是二进制的(0 类和 1 类)

有什么方法可以直接将 y_train 和 y_test 添加到proportion_ztest调用中,就像上面的代码一样,或者,在此之前,我必须计算所有 1 个类和每个数据集中的观察总数(y_train 和 y_test)并使用 np.arrays 编写代码,例如:

success = [123, 359]
TotalObs = [2500, 2500]
(test_stat, p_value) = proportions_z_test(success, TotalObs, alternative='two-sided')

stratify除了将参数添加到调用中之外,我正在尝试找到解决方案train_test_split

任何帮助将不胜感激。

泰!

标签: pythonscikit-learnstatsmodels

解决方案


如果随机变量已经编码为二进制 0、1,则总和计算成功次数。

因此,以下应该适用于等比例的两个样本测试

(test_stat, p_value) = proportions_z_test([y_train.sum(), y_test.sum()], 
                                          [len(y_train), len(y_test)], 
                                          alternative='two-sided')

推荐阅读