4.1.1.6.EqualWidthBinning_manual.md 2.19 KB
Newer Older
HooYoungAhn's avatar
HooYoungAhn committed
---
html:
  toc: true
  offline: true
export_on_save:
  html: true
---
# Equal-Width-Binning Operator
---
## Operator 설명
- 동일한 범위의 Bins를 n개 만큼 생성하여 범위에 속하는 각 데이터를 범위형태로 표현하게 된다.
- Data:0, 4, 12, 16, 16, 18, 24, 26, 28이고 Bin의 개수가 3일 경우.
  - Bin1: 0, 4 [-,10]
    Bin2: 12, 16, 16, 18 [10,20]
    Bin3: 24, 26, 28 [20,+]
    <img src="/images/4.1.1.6.Eqaul_width.png">
## Operator 파라미터 설명
- selectedColumnId: Equal-width-binning을 수행 할 column ID (repeated)
- numberOfBins: 생성 할 bins의 개수 (required)
- outputType: 수행 후 출력할 타입. Enum(NEW_COLUMN, VALUE_CHANGE) (required)
##작동순서
1. 입력 DataFrame의 유효성 검사를 진행한다. (Numeric Columns, Bins 유효성 검사)
2. Bins 구간을 설정한다. (Bins 간격을 구하는 방법은 해당 칼럼의 데이터의 (최대값 – 최소값) / Bins의 개수)
3. 선택된 칼럼의 데이터를 범위 형태로 변환을 한다.
4. 출력 DataFrame을 생성한다.

## Operator 모듈 테스트 결과

### 입력 데이터

|original_data|index|
:--:|:---:|
|       2|    0|
|       3|    1|
|       4|    2|
|       5|    3|
|       6|    4|
|       7|    5|
|       8|    6|
|       9|    7|
|      10|    8|
|      12|    9|
|      14|   10|

### 결과 데이터

|original_data|     result|    
|:---:|:---:|:---:|
|       2|    range1[-Infinity-...|
|       3|    range1[-Infinity-...|
|       4|    range1[-Infinity-...|
|       5|    range2[5.000000-8...|
|       6|    range2[5.000000-8...|
|       7|    range2[5.000000-8...|
|       8|    range3[8.000000-11...|
|       9|    range3[8.000000-11...|
|      10|    range3[8.000000-11...|
|      12|    range4[11.000000-...|
|      14|   range4[11.000000-...|

- 생성할 Bins 수를 4개로 설정하였다.
- 결과 DataFrame을 보면 동일한 크기의 4개의 bins(range1,range2,range3,range4)에 각 data들이 할당 되었음을 알 수 있고 parameter는 다음과 같이 설정하였다.

```scala
val equalWidthBinningInfo = EqualWidthBinningInfo.newBuilder()
  .addSelectedColumnId(0)
  .setNumberOfBins(4)
  .setOutputType(OutputType.NEW_COLUMN)
  .build
```