- Equal-Depth-Binning Operator는 데이터를 bins의 개수만큼 그룹으로 나누고 각 그룹에는 대략적으로 동일한 수의 데이터들이 포함된다.
- Data:0, 4, 12, 16, 16, 18, 24, 26, 28이고 Bin의 개수가 3일 경우.
- Bin1: 0, 4, 12 [-,14]
Bin2: 16, 16, 18 [14,21]
Bin3: 24, 26, 28 [21,+]
- selectedColumnId: Equal-depth-binning을 수행 할 column ID (repeated)
- numberOfBins: 생성할 Bins의 개수 (required)
- outputType: 출력할 타입. Enum(NEW_COLUMN, VALUE_CHANGE) (required)
- 입력 DataFrame의 유효성 검사를 진행한다. (Numeric Columns, Bins 유효성 검사)
- 입력 DataFrame의 선택된 칼럼을 정렬한다. (asc)
- Bins 안에 들어가야하는 이상적인 개수를 미리 설정한다.
- Bins 구간을 설정한다. ((현재 데이터 – 이전데이터) / 2를 하여 구간 간격을 조율함)
- 선택된 칼럼의 데이터를 범위 형태로 변환을 한다.
- 출력 DataFrame을 생성한다.
original_data |
index |
0 |
0 |
4 |
1 |
12 |
2 |
16 |
3 |
16 |
4 |
18 |
5 |
24 |
6 |
26 |
7 |
28 |
8 |
original_data |
result |
0 |
range1[-Infinity-... |
4 |
range1[-Infinity-... |
12 |
range1[-Infinity-... |
16 |
range2[14.000000-... |
16 |
range2[14.000000-... |
18 |
range2[14.000000-... |
24 |
range3[21.000000-... |
26 |
range3[21.000000-... |
28 |
range3[21.000000-... |
- 생성할 bins 수는 3개로 설정하였다.
- 결과 DataFrame에서 3개의 bins(range1,range2,range3)에 같은 개수의 data들이 할당 되었음을 알 수 있고 parameter는 다음과 같이 설정하였다.
val equalDepthBinningInfo = EqualDepthBinningInfo.newBuilder()
.addSelectedColumnId(0)
.setNumberOfBins(3)
.setOutputType(OutputType.NEW_COLUMN)
.build