首页 > 解决方案 > f_classif (sklearn) 的输出是一个仅包含 nan 的数组

问题描述

我使用 train_test_split 来拆分训练集调用 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]

我所做的有什么问题?
我试图在谷歌上找到解决方案。有人说应该是标签而不是价值。那什么意识?

标签: pythonpandasscikit-learnsklearn-pandas

解决方案


特征中类的观察数量可能不足以进行计算。假设“M”是 feature1 中的一个类。由于您拆分了数据集,因此“M”可能会留在数据集的另一部分。所以 X_train 没有足够数量的“M”类。每个类都应与其他功能中的其他类一起出现。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-使用统计工具箱


推荐阅读