인공지능 이산수학 실습 코드 내용정리

사족

이어드림 2주차..
13시간에 걸쳐 인공지능과 관련된 수학 기본 지식들을 찍먹해보았습니다 ! 고등학교 확률과 통계 내용과 겹치는 부분이 있어서 리터럴리 10년 전으로 돌아간 듯한 기분ㅎ.ㅎ 아무튼 정리 시작!

변수의 종류 확인하기

데이터의 종류는 아래와 같이 나눌 수 있다.

Categorical / Numerical -Nominal -Discrete -Ordinal -Continuous

1. Categorical - 범주형

1.1 Nominal - 굳이 번역하자면 '명목형'
혈액형처럼 숫자의 크기나 순서와 아무런 상관이 없어서 
A=1, B=2, AB=3, O=4 처럼 숫자를 붙이는 것이 정말 '네이밍' 그이상 그이하의 의미가 없는 경우. 

### 1.2 Ordinal - '순서형'
금/은/동메달, 

2. Numerical - 숫자형 혹은 수치형 : 연산이 가능!

2.1 Discrete - '이산형'
동전을 n회 던져서 앞면이 나온 횟수처럼 정수형으로 셀 수 있는 변수. 

2.2 Continuous - '연속형'
키, 몸무게처럼 실수로 나타낼 수 있는 변수. 

Age의 data type이 바뀌어있는 것을 확인할 수 있다.

범주형 열과 숫자형 열들을 분리해서 리스트화시켰다.

우리가 원하는 것은 범주형 열의 데이터들을 숫자로 바꿔주기 ! = 인코딩이라고 부르기로 했어요. LabelEncoding하는 방법에는

  1. 판다스에서 직접하는 방법
  2. sklearn을 이용하는 방법 두 가지가 있다고 합니다. 하지만 저는 판다스도 서킷런(??)도 모르니 넘어가도록 합니다.

오디널 인코더..뭐요??
항목을 순서로 바꿔주자. 순서가 무조건 부여되는 것은 아니라고 한다.
아래 결과를 통해 왼손은 1, 오른손은 2, 양손잡이는 0으로 변환된 것을 확인할 수 있다.

왼손이 1, 오른손이 2라고 해서 왼손이 오른손보다 낫다든가 먼저라든가 하는 순서가 없는 nomianl 명목형 변수지만,
추후에 모델이 학습될 때 이 순서가 영향을 줄 수도 있으므로
'원 핫 인코딩 '을 적용해보기로 하자. '목적하는 변수 외에는 데이터 값을 0으로 만들어주는 것'인 것까지만 이해했다.
아래 코드를 실행하면 약간 행렬스러운 어레이와 그 설명을 볼 수 있다.

표를 다시 불러와볼까요?

이번에는 숫자형 변수인 키 열을 인코딩해보자.
키는 Tall, Middle, Small로 구분된 모양이지만,
안타깝게도 파이썬은 큰 사람을 2, 작은 사람들 1, 중간인 사람을 0으로 지정해버렸다.

대참사를 막기 위해 올바른 순서를 다시 알려주자. S, M, T 순서대로 지정해!

사족

이 한 페이지를 정리하기 위해 한 시간이나 걸렸다니 믿을 수 없다. 앞으로 공부 더 열심히 해야겠구나를 느낀 순간..