## 方差阈值
> `VarianceThreshold`是一种简单的特征选择基线方法。它会删除方差不符合某个阈值的所有要素。默认情况下,它会删除所有零方差要素,即在所有样本中具有相同值的要素。
### 构造函数参数
`$threshold`(float) - 方差低于此阈值的要素将被删除(默认为0.0)
```
use Phpml\FeatureSelection\VarianceThreshold;
$transformer = new VarianceThreshold(0.15);
```
*****
### 使用示例
例如,假设我们有一个具有布尔特征的数据集,并且我们希望删除80%以上样本中的一个或零(打开或关闭)的所有特征。布尔特征是伯努利随机变量,这些变量的方差由下式给出
```
Var\[X\] = p(1 - p)
```
所以我们可以选择使用阈值.8 *(1 - .8):
```
use Phpml\FeatureSelection\VarianceThreshold;
$samples = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]];
$transformer = new VarianceThreshold(0.8 * (1 - 0.8));
$transformer->fit($samples);
$transformer->transform($samples);
/*
$samples = [[0, 1], [1, 0], [0, 0], [1, 1], [1, 0], [1, 1]];
*/
```
## Pipeline
`VarianceThreshold`实现了`Transformer`接口,因此它可以用作`pipeline`的一部分:
```
use Phpml\FeatureSelection\VarianceThreshold;
use Phpml\Classification\SVC;
use Phpml\FeatureExtraction\TfIdfTransformer;
use Phpml\Pipeline;
$transformers = [
new TfIdfTransformer(),
new VarianceThreshold(0.1)
];
$estimator = new SVC();
$pipeline = new Pipeline($transformers, $estimator);
```