如何比较 2 个数据集的数据分布?

机器算法验证 机器学习 分布 Python 数据集 scipy
2022-03-02 13:59:30

我很难理解如何按分布比较两组数据

例如,
我如何理解 X100 列与 Y1 列具有相同的分布?

在此处输入图像描述

在此处输入图像描述

另外,有没有办法表达所有列与所有列的分布比较?

我是使用python的机器学习开发人员,这是我正在处理的分类问题的一部分。

希望有任何帮助.. tnx :)

1个回答

您可以使用两个样本Kolmogorov-Smirnov 测试比较两列的分布,它包含在scipy.statshttps ://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ks_2samp.html

stackoverflow主题

from scipy.stats import ks_2samp
import numpy as np

np.random.seed(123456)
x = np.random.normal(0, 1, 1000)
y = np.random.normal(0, 1, 1000)
z = np.random.normal(1.1, 0.9, 1000)

>>> ks_2samp(x, y)
Ks_2sampResult(statistic=0.022999999999999909, pvalue=0.95189016804849647)
>>> ks_2samp(x, z)
Ks_2sampResult(statistic=0.41800000000000004, pvalue=3.7081494119242173e-77)

在原假设下,两个分布是相同的。如果 KS 统计量很小或 p 值很高(大于显着性水平,例如 5%),那么我们不能拒绝两个样本的分布相同的假设。相反,如果 p 值低,我们可以拒绝原假设。