【问题标题】:Feature selection using Chi2 generates nan使用 Chi2 进行特征选择生成 nan
【发布时间】:2019-07-25 17:54:29
【问题描述】:

我想对我的数据集进行特征评估的 Chi2 分析,但结果包括 nan 值。为什么 nan 值出现在结果中,我该如何解决这个问题?例如,在下面的例子中,第二个特征的重要性得分是多少?

from sklearn.feature_selection import chi2
from sklearn.feature_selection import SelectKBest

X = np.array([[0.        , 0.        , 0.968     , 0.57894737, 0.46666667],
       [0.        , 0.        , 0.968     , 0.65789474, 0.        ],
       [0.5       , 0.        , 0.968     , 0.65789474, 0.55      ],
       [0.        , 0.        , 0.968     , 0.65789474, 0.        ],
       [0.        , 0.        , 0.968     , 0.65789474, 0.        ],
       [0.        , 0.        , 0.968     , 0.55263158, 0.56666667],
       [0.        , 0.        , 0.968     , 0.71052632, 0.41666667],
       [0.        , 0.        , 0.968     , 0.42105263, 0.        ],
       [0.        , 0.        , 0.968     , 0.42105263, 0.        ],
       [0.        , 0.        , 0.968     , 0.55263158, 0.        ]])

y = np.array([[1],
       [0],
       [1],
       [1],
       [0],
       [1],
       [1],
       [0],
       [1],
       [0]])

chi2_selector = SelectKBest(score_func=chi2, k=3)
X_kbest = chi2_selector.fit_transform(X, y)
chi2_selector.scores_

输出:

(array([0.33333333,        nan, 0.        , 0.00237983, 1.33333334]),
 array([0.56370286,        nan, 1.        , 0.96109184, 0.24821308]))

【问题讨论】:

    标签: machine-learning scikit-learn feature-selection


    【解决方案1】:

    您在该特定特征中只有零值,因此该特征的列联表中的预期值之一将具有 E=0,并且由于 chi2 公式具有 ff:

    (O-E)^2 / E

    那么如果 E=0,它会产生 NAN 值。

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 2018-09-25
      • 1970-01-01
      • 2016-03-16
      • 2018-05-23
      • 2013-08-15
      • 2016-03-16
      • 1970-01-01
      • 2022-07-27
      相关资源
      最近更新 更多