python - 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]
我所做的有什么问题?
我试图在谷歌上找到解决方案。有人说应该是标签而不是价值。那什么意识?
解决方案
特征中类的观察数量可能不足以进行计算。假设“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-使用统计工具箱
推荐阅读
- node.js - Nuxt 和 Docker:在 nuxt.config.js 中指定服务器 - 甚至默认 - 阻止访问 localhost?
- android-studio - Android Studio 未找到某些方法和字段的用法
- c# - Entity Framework Core 使用 Dbset 而没有 T
- nginx - 在 Nginx 上服务 Jekyll 博客
- python - 在 Vispy 中标准化可缩放时间序列图的比例
- c# - 将纯文本转换为在 p 标签内包含 i 标签
- python - 仅当我们匹配要查找的两个单词时,才提取第一个匹配项和第二个匹配项之后的单词(直到到达逗号)
- c++ - 计算 6 x 6 矩阵中每个沙漏的沙漏总和(其中条目只能从 0 到 9),然后打印最大沙漏总和
- css - 表单元素忽略正文 CSS
- php - 集成 PHP、SSH 和 ssh-agent