sklearn:卡方分布输入不能是负数

今天使用sklearn进行特征选择的时候出现一个错误:

ValueError: Input X must be non-negative.

找了stackoverflow,原来是卡方验证不能用于负值。

卡方分布是通过统计当前变量的频次,和目标变量的频次来分析当前变量时候有关系来衡量当前变量的重要程度,所以用来做特征选择。这里细致讲解,请看参考博客第三个。

频次当然不是负数,所以不能输入负数值。

解决办法:
1.把输入变化到0-1.

sklearn.preprocessing.MinMaxScaler().fit_transform(YOUR_TRAINING_FEATURES_HERE)

2.用其他的特征选择方法。

klearn.feature_selection.f_classif 计算 ANOVA f-value
sklearn.feature_selection.mutual_info_classif 计算 mutual information

参考博客:
1.stackoverflow:https://stackoverflow.com/questions/64596532/problem-with-negative-numbers-in-sklearn-feature-selection-selectkbest-feautre-s
2.https://stackoverflow.com/questions/25792012/feature-selection-using-scikit-learn/46608239#46608239
3.推荐:统计学——卡方检验和卡方分布
4.sklearn特征选择doc:https://scikit-learn.org/stable/modules/feature_selection.html

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值