我正在尝试使用VarianceThreshold删除具有低方差的特征 在我看来,我们应该在计算方差之前对数据进行归一化,但不知何故 VarianceThreshold 并没有自动进行。想法?
我们应该在 sklearn 中使用 VarianceThreshold 之前进行标准化吗?
机器算法验证
方差
特征选择
2022-03-17 19:34:52
3个回答
是的,在使用 VarianceThreshold 之前必须进行标准化。这对于使所有功能达到相同的规模是必要的。否则,方差估计可能会在较高价值特征和较低价值特征之间产生误导。默认情况下,它不包含在函数中。必须使用 scikit-learn 中提供的 MinMaxScaler 或 StandardScaler 来完成。
特征必须具有相同的单位,因此必须进行缩放(例如,使用 MinMaxScaler 将范围缩小到 [0,1])。
例如使用 StandardScaler 进行标准化,这意味着移除均值并缩放到单位方差,这是错误的,因为当然每个特征都会有方差 1。
我创建了一个问题来要求澄清文档。这是回应:
规范化和非规范化数据在 VarianceThreshold 中有有效的用例:
- 如果您只想使用 VarianceThreshold 来删除常量特征,则无论数据是否标准化,threshold=0 都有效。
- 如果您希望阈值对特征具有相同的含义,那么规范化是有意义的。
文档字符串中的示例展示了用例 1...
来源:https ://github.com/scikit-learn/scikit-learn/issues/23394
我相信第二点是非零阈值只有在特征已经被规范化(因此它们具有相同的比例)时才真正有意义,如prashanth所述
其它你可能感兴趣的问题