f_classif (sklearn)的输出是一个只包含nan的数组



我使用train_testrongplit来分割训练集X_train和y_train。对于X_train,我得到799行和9个特征。对于y_train,它有799行,这是"更改"。当我尝试用F,PV = f_classif(X, y)得到f值。9个特征有9个值是正确的,但它是'nan'。我只是不明白为什么我不能得到任何输出。
我仔细检查了X_train和y_train的形状。

X_train:(799, 9)
y_train:(799,)

应该是正确的

输出:

[nan nan nan nan nan nan nan nan nan]
我所做的有什么不对吗?我试着在谷歌上找到一个解决方案。有人说它应该是标签而不是价值。这是什么意思?

特征中类别的观察数量可能不足以进行计算。假设'M'是feature1中的一个类。由于您拆分了数据集,因此'M'可能留在数据集的其他部分。所以X_train没有足够数量的'M'类。每个类应该与其他类一起出现在其他特性中。如果您使用pandas,则可以使用value_counts方法检查。

你可以在下面的链接中找到一个例子。https://www.mathworks.com/matlabcentral/answers/102853-why-do-i-recieve-nan-s-in-the-anova-table-when-i-try-to-analyze-my-data-using-the-statistics-toolbox

相关内容

最新更新