- 동일한 범위의 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,+]
- selectedColumnId: Equal-width-binning을 수행 할 column ID (repeated)
- numberOfBins: 생성 할 bins의 개수 (required)
- outputType: 수행 후 출력할 타입. Enum(NEW_COLUMN, VALUE_CHANGE) (required)
- 입력 DataFrame의 유효성 검사를 진행한다. (Numeric Columns, Bins 유효성 검사)
- Bins 구간을 설정한다. (Bins 간격을 구하는 방법은 해당 칼럼의 데이터의 (최대값 – 최소값) / Bins의 개수)
- 선택된 칼럼의 데이터를 범위 형태로 변환을 한다.
- 출력 DataFrame을 생성한다.
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는 다음과 같이 설정하였다.
val equalWidthBinningInfo = EqualWidthBinningInfo.newBuilder()
.addSelectedColumnId(0)
.setNumberOfBins(4)
.setOutputType(OutputType.NEW_COLUMN)
.build