--- 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,+] ## 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 ```