이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

categorical형 배열 생성하기

이 예제에서는 categorical형 배열을 생성하는 방법을 보여줍니다. categorical은 유한한 이산 범주 집합에 속하는 값의 데이터를 저장하기 위한 데이터형입니다. 이러한 범주에는 일반적인 순서가 있을 수도 있지만 반드시 그런 것은 아닙니다. categorical형 배열은 데이터를 효율적으로 저장하고 편리하게 조작할 수 있도록 하는 동시에 값에 대한 의미 있는 이름도 유지합니다. categorical형 배열은 대개 테이블에서 행의 그룹을 정의하는 데 사용됩니다.

기본적으로, categorical형 배열은 수학적 정렬(Mathematical Ordering)이 적용되지 않는 범주를 포함합니다. 예를 들어, 애완 동물 범주들로 구성된 이산 집합 {'dog' 'cat' 'bird'}에는 유의미한 수학적 순서가 없으므로 MATLAB®은 사전순 정렬 {'bird' 'cat' 'dog'}를 사용합니다. 순서형 categorical형 배열은 유의미한 수학적 정렬이 적용되는 범주를 포함합니다. 예를 들어, 크기 범주들로 구성된 이산 집합 {'small', 'medium', 'large'}에는 수학적 정렬 small < medium < large가 적용됩니다.

문자형 벡터로 구성된 셀형 배열이나 string형 배열에서 categorical형 배열을 생성하면 선행 공백과 후행 공백이 제거됩니다. 예를 들어, 텍스트 {' cat' 'dog '}를 범주로 지정할 경우 이 텍스트를 범주로 변환하면 {'cat' 'dog'}가 됩니다.

문자형 벡터로 구성된 셀형 배열에서 categorical형 배열 생성하기

categorical 함수를 사용하여 숫자형 배열, 논리형 배열, string형 배열, 문자형 벡터로 구성된 셀형 배열, 기존 categorical형 배열 중 하나에서 categorical형 배열을 생성할 수 있습니다.

뉴잉글랜드의 주 이름을 포함하는 문자형 벡터로 구성된 1x11 셀형 배열을 생성합니다.

state = {'MA','ME','CT','VT','ME','NH','VT','MA','NH','CT','RI'};

셀형 배열 state를 수학적인 순서가 없는 categorical형 배열로 변환합니다.

state = categorical(state)
state = 1x11 categorical array
  Columns 1 through 9

     MA      ME      CT      VT      ME      NH      VT      MA      NH 

  Columns 10 through 11

     CT      RI 

class(state)
ans = 
'categorical'

변수 state에 이산 범주를 나열합니다.

categories(state)
ans = 6x1 cell array
    {'CT'}
    {'MA'}
    {'ME'}
    {'NH'}
    {'RI'}
    {'VT'}

범주가 사전순으로 나열됩니다.

문자형 벡터로 구성된 셀형 배열에서 순서형 categorical형 배열 생성하기

8개 객체의 크기를 포함하는 문자형 벡터로 구성된 1x8 셀형 배열을 생성합니다.

AllSizes = {'medium','large','small','small','medium',...
            'large','medium','small'};

셀형 배열 AllSizes에는 3개의 각기 다른 값 'large', 'medium', 'small'이 있습니다. 문자형 벡터로 구성된 셀형 배열의 경우 small < medium < large를 간편하게 나타낼 수 있는 방법이 없습니다.

셀형 배열 AllSizes를 순서형 categorical형 배열로 변환합니다. valueset을 사용하여 범주를 정의하는 값 small, medium, large를 지정합니다. 순서형 categorical형 배열의 경우, 지정되는 첫 번째 범주가 가장 작으며 마지막 범주가 가장 큽니다.

valueset = {'small','medium','large'};
sizeOrd = categorical(AllSizes,valueset,'Ordinal',true)
sizeOrd = 1x8 categorical array
  Columns 1 through 6

     medium      large      small      small      medium      large 

  Columns 7 through 8

     medium      small 

class(sizeOrd)
ans = 
'categorical'

categorical형 배열에 포함된 값의 순서 sizeOrd는 변경되지 않은 상태로 유지됩니다.

categorical형 변수 sizeOrd에 이산 범주를 나열합니다.

categories(sizeOrd)
ans = 3x1 cell array
    {'small' }
    {'medium'}
    {'large' }

범주가 수학적 정렬(Mathematical Ordering) small < medium < large와 일치하도록 지정된 순서로 나열됩니다.

숫자형 데이터를 비닝(Binning)하여 순서형 categorical형 배열 생성

0과 50 사이에 있는 100개의 난수로 구성된 벡터를 생성합니다.

x = rand(100,1)*50;

discretize 함수를 사용하여 x의 값을 비닝함으로써 categorical형 배열을 생성합니다. 0과 15 사이의 모든 값을 첫 번째 Bin에 추가하고, 15와 35 사이의 모든 값을 두 번째 Bin에 추가하고, 35와 50 사이의 모든 값을 세 번째 Bin에 추가합니다. 각 Bin은 좌측 끝점은 포함하지만 우측 끝점은 포함하지 않습니다.

catnames = {'small','medium','large'};
binnedData = discretize(x,[0 15 35 50],'categorical',catnames);

binnedData는 3개의 범주를 갖는 100x1 순서형 categorical형 배열이며 small < medium < large가 됩니다.

summary 함수를 사용하여 각 범주에 포함된 요소의 개수를 출력합니다.

summary(binnedData)
     small       30 
     medium      35 
     large       35 

string형 배열에서 categorical형 배열 생성하기

R2016b부터는 string 함수를 사용하여 string형 배열을 생성하고 categorical형 배열로 변환할 수 있습니다.

행성의 이름이 포함된 string형 배열을 생성합니다.

str = string({'Earth','Jupiter','Neptune','Jupiter','Mars','Earth'})
str = 1x6 string array
    "Earth"    "Jupiter"    "Neptune"    "Jupiter"    "Mars"    "Earth"

str을 categorical형 배열로 변환합니다.

planets = categorical(str)
planets = 1x6 categorical array
     Earth      Jupiter      Neptune      Jupiter      Mars      Earth 

str에 누락된 요소를 추가하고 categorical형 배열로 변환합니다. str에 누락된 값이 있으면 planets에 정의되지 않은 값이 포함됩니다.

str(8) = 'Mars'
str = 1x8 string array
  Columns 1 through 6

    "Earth"    "Jupiter"    "Neptune"    "Jupiter"    "Mars"    "Earth"

  Columns 7 through 8

    <missing>    "Mars"

planets = categorical(str)
planets = 1x8 categorical array
  Columns 1 through 6

     Earth      Jupiter      Neptune      Jupiter      Mars      Earth 

  Columns 7 through 8

     <undefined>      Mars 

참고 항목

| | |

관련 예제

세부 정보