## 缺失值补全 > 由于各种原因,许多真实世界数据集包含缺失值,通常编码为空格,NaN或其他占位符。要解决此问题,您可以使用`Imputer`类。 ### 构造函数参数 `$missingValue`(mixed) - 此值将被替换(默认为null) `$strategy`(Strategy) - 估算策略(读取使用:`MeanStrategy`,`MedianStrategy`,`MostFrequentStrategy`) `$axis`(int) - 策略的轴,`Imputer :: AXIS_COLUMN`或`Imputer :: AXIS_ROW` `$samples`(array) - 要训练的样本数组 ``` $imputer = new Imputer(null, new MeanStrategy(), Imputer::AXIS_COLUMN); $imputer = new Imputer(null, new MedianStrategy(), Imputer::AXIS_ROW); ``` ### 策略 `MeanStrategy` - 使用沿轴的平均值替换缺失值 `MedianStrategy`- 使用沿轴的中位数替换缺失值 `MostFrequentStrategy` - 使用沿轴最频繁的值替换缺失 ### 使用示例 ``` use Phpml\Preprocessing\Imputer; use Phpml\Preprocessing\Imputer\Strategy\MeanStrategy; $data = [ [1, null, 3, 4], [4, 3, 2, 1], [null, 6, 7, 8], [8, 7, null, 5], ]; $imputer = new Imputer(null, new MeanStrategy(), Imputer::AXIS_COLUMN); $imputer->fit($data); $imputer->transform($data); /* $data = [ [1, 5.33, 3, 4], [4, 3, 2, 1], [4.33, 6, 7, 8], [8, 7, 4, 5], ]; */ ``` 您还可以使用`$samples`构造函数参数而不是`fit`方法: ``` use Phpml\Preprocessing\Imputer; use Phpml\Preprocessing\Imputer\Strategy\MeanStrategy; $data = [ [1, null, 3, 4], [4, 3, 2, 1], [null, 6, 7, 8], [8, 7, null, 5], ]; $imputer = new Imputer(null, new MeanStrategy(), Imputer::AXIS_COLUMN, $data); $imputer->transform($data); ```