--- html: toc: true offline: true export_on_save: html: true --- # Missing Value Impute Operator --- ## Operator 설명 - 데이터 공백 처리기(MVI)는 사용자가 원하는 범위, MVI method, drop 조건 등을 설정하면, 입력 DataFrame에 대해 데이터 공백을 채우는 동작을 수행한 후, 결과 DataFrame을 생성한다. ## Operator 파라미터 설명 - scope: missing value imputation을 적용할 범위. Enum(SCOPE_ALL, SCOPE_SELECTED) (required) - selectedColumnId: Missing Value Imputation을 수행 할 column ID.SCOPE_ALL일 경우 무시 (repeated) - method: 적용할 방법. Enum(IM, SPECIFIC_VALUE, MEDIAN, MEAN) (required) - how: 삭제 조건. Enum(HOW_ANY, HOW_ALL) (required) 'HOW_ANY': null값이 포함된 행이 삭제된다. 'HOW_ALL': 모든 column이 null인 경우에만 행을 삭제합니다. - subParam: 특정 값을 채우는 option. (repeated) Ex: {numeric, 0} |filed|value|설명| |:---:|:---:|:---:| | subParam.key | numeric | 특정 숫자로 채우는 방법 선택 | | subParam.value | 0 | missing value를 0의 값으로 채움| ##작동 순서 1. 입력 DataFrame 및 Protobuffer 입력 파라미터 유효성 검사를 진행한다. 2. Spark ml 및 DataFrame API를 이용하여 MVI 알고리즘 동작한다. 3. 출력 DataFrame을 생성한다. ## Operator 모듈 테스트 결과 ### 입력 데이터
-0.2947324415-0.1463210702 -0.3093645485-0.3841973244-0.3511705686-0.1647157191
-0.2683946488-0.1998327759-0.1655518395-0.2826086957-0.3883779264-0.3319397993-0.1730769231
-0.2880434783-0.2566889632-0.3850334448-0.3704013378-0.1693143813
-0.3131270903-0.2215719064-0.1580267559-0.2408026756-0.3683110368-0.2274247492
-0.3152173913-0.1421404682-0.1484113712-0.1605351171-0.3386287625-0.3465719064
-0.2683946488-0.1998327759-0.1655518395-0.2826086957-0.3319397993-0.1730769231
-0.2880434783-0.2186454849-0.2491638796-0.3850334448-0.1693143813
-0.2215719064-0.1580267559-0.2408026756-0.3683110368-0.3837792642
-0.3152173913-0.1421404682-0.1484113712-0.1605351171-0.3386287625-0.3465719064-0.1772575251
-0.3110367893-0.1906354515-0.2495819398-0.3595317726-0.3298494983-0.1496655518
### 결과 데이터
-0.2947324415-0.14632107020 -0.3093645485-0.3841973244-0.3511705686-0.1647157191
-0.2683946488-0.1998327759-0.1655518395-0.2826086957-0.3883779264-0.3319397993-0.1730769231
-0.28804347830-0.25668896320-0.3850334448-0.3704013378-0.1693143813
-0.3131270903-0.2215719064-0.1580267559-0.2408026756-0.36831103680-0.2274247492
-0.3152173913-0.1421404682-0.1484113712-0.1605351171-0.3386287625-0.34657190640
-0.2683946488-0.1998327759-0.1655518395-0.28260869570-0.3319397993-0.1730769231
-0.2880434783-0.21864548490-0.2491638796-0.38503344480-0.1693143813
0-0.2215719064-0.1580267559-0.2408026756-0.3683110368-0.38377926420
-0.3152173913-0.1421404682-0.1484113712-0.1605351171-0.3386287625-0.3465719064-0.1772575251
-0.3110367893-0.1906354515-0.24958193980-0.3595317726-0.3298494983-0.1496655518
- DataFrame의 missing value를 원하는 특정 값으로 채울 수 있고 예제에서는 0 값으로 설정하였다. - 입력 DataFrame에서 missing value(빈 공간)가 결과 DataFrame에서는 0 값으로 채워지는 것을 알 수 있다. - parameter는 다음과 같이 설정하였다. ```scala val mviInfo = MissingValueImputationInfo.newBuilder() .setScope(MissingValueImputationInfo.Scope.SCOPE_ALL) .addSelectedColumnId(1) .setMethod(MissingValueImputationInfo.Method.SPECIFIC_VALUE) .setHow(MissingValueImputationInfo.How.HOW_ANY) .addSubParam( SubParameter.newBuilder .setKey("numeric") .setValue("0") .build ) .build ```