我有一个表 (X, Y),其中 X 是一个矩阵,Y 是一个类向量。这里有一个例子:
X = 0 0 1 0 1 and Y = 1
0 1 0 0 0 1
1 1 1 0 1 0
我想使用 Mann-Whitney U 检验来计算特征重要性(特征选择)
from scipy.stats import mannwhitneyu
results = np.zeros((X.shape[1],2))
for i in xrange(X.shape[1]):
u, prob = mannwhitneyu(X[:,i], Y)
results[i,:] = u, pro
我不确定这是否正确?我获得了大表的大值,某些列的
u = 990
。 最佳答案
我不认为使用 Mann-Whitney U 检验是进行特征选择的好方法。 Mann-Whitney 测试两个变量的分布是否相同,它没有告诉您变量的相关程度。例如:
>>> from scipy.stats import mannwhitneyu
>>> a = np.arange(100)
>>> b = np.arange(100)
>>> np.random.shuffle(b)
>>> np.corrcoef(a,b)
array([[ 1. , -0.07155116],
[-0.07155116, 1. ]])
>>> mannwhitneyu(a, b)
(5000.0, 0.49951259627554112) # result for almost not correlated
>>> mannwhitneyu(a, a)
(5000.0, 0.49951259627554112) # result for perfectly correlated
因为
a
和 b
具有相同的分布,我们无法拒绝分布相同的原假设。由于在特征选择中您试图找到主要解释
Y
的特征,Mann-Whitney U 不会帮助您解决这个问题。关于python - 如何在学习中使用 Mann-Whitney U 检验,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16877712/