Main Content

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              

참고 항목

|

관련 예제

세부 정보