categorical형 배열 사용의 이점
categorical형 데이터의 자연스러운 표현
categorical
은 유한한 이산 범주 집합에 속하는 값의 데이터를 저장하기 위한 데이터형입니다. categorical형 배열 대신에 선택할 수 있는 일반적인 방법은 string형 배열을 사용하는 것입니다. 하지만 string형 배열은 텍스트를 저장하기는 하지만 범주를 정의할 수는 없습니다. categorical형 배열 대신에 가능한 또 다른 방법은 숫자형 배열의 정수를 사용하여 범주형 데이터를 저장하는 것입니다. 숫자형 배열을 사용하면 범주 이름에 담긴 유용한 설명 정보를 모두 잃게 되며, 또한 정수 값이 통상의 수치적 의미를 갖는 것처럼 보일 수 있지만 범주형 데이터는 그러한 의미를 가지지 않습니다.
범주에 대한 수학적 정렬(Mathematical Ordering)
categorical형 배열은 유한한 이산 범주 집합에 속하는 값을 갖는 비수치적 데이터에 사용할 수 있는 간편하고 메모리 효율적인 컨테이너입니다. categorical형 배열은 특히 범주가 유의미한 수학적 정렬이 가능한 경우 유용한데, 예를 들어 이산 범주 집합 ["small" "medium" "large"]
를 요소로 갖는 배열은 small < medium < large
의 순서를 적용할 수 있습니다.
string형 배열은 오로지 영숫자 순서의 정렬만 제공합니다. categorical형 배열을 사용해야만 해당 범주 집합에 적합한 유형의 정렬을 원하는 대로 지정할 수 있습니다. 관계 연산을 사용하여 동일성 여부를 테스트할 수 있고 유의미한 수학적 순서를 갖는 요소들끼리 비교할 수 있습니다.
메모리 사용량 줄이기
이 예제에서는 데이터를 string형 배열로 저장할 때 필요한 메모리와 categorical형 배열로 저장할 때 필요한 메모리를 비교하는 방법을 보여줍니다. string형 배열은 반복되는 값을 다수 가지고 있더라도 이들 요소를 각각 저장해야 합니다. categorical형 배열은 각 범주 이름을 하나씩만 저장하기 때문에, 배열에 반복되는 값이 많더라도 대개 배열을 저장하는 데 필요한 메모리 크기가 줄어듭니다.
샘플 string형 배열을 만듭니다.
state = [repmat("MA",25,1);repmat("NY",25,1); ... repmat("CA",50,1); ... repmat("MA",25,1);repmat("NY",25,1)];
변수 state
에 대한 정보를 표시합니다.
whos state
Name Size Bytes Class Attributes state 150x1 8212 string
state
를 categorical형 배열로 변환합니다.
stateCats = categorical(state);
변수 stateCats
에 있는 이산 범주들을 표시합니다.
categories(stateCats)
ans = 3x1 cell
{'CA'}
{'MA'}
{'NY'}
stateCats
는 150개 요소를 포함하지만, 이산 범주는 3개만 포함합니다.
두 변수에 대한 정보를 표시합니다. categorical형 배열을 저장하는 데 필요한 메모리가 상당히 줄어들었습니다.
whos state stateCats
Name Size Bytes Class Attributes state 150x1 8212 string stateCats 150x1 524 categorical
참고 항목
관련 예제
- categorical형 배열 생성하기
- 테이블 변수의 텍스트를 categorical형으로 변환하기
- categorical형 배열 요소 비교하기
- categorical형 배열로 데이터에 액세스하기