title: “5. 인코딩 그리고 변수 선택”
categories:
- Python tags:
-
Study, Python
5. 인코딩 그리고 변수 선택
목차
- Step 1. One-hot Encoding
- Step 2. Label-encoding
- Step 3. Feature selection(filtering)
오늘은 long_jump.csv 데이터 셋을 사용하여 실습을 진행할 예정이다.
1 |
|
1 |
|
Step 1. One-hot Encoding
위 데이터를 살펴보면 Jersey Size 컬럼은 연속형 데이터가 아닌, 범주형 데이터로 이루어져있다.
각 범주를 1,0 으로 표현하기 위해 범주형 변수의 해당 값을 클래스로 만들고 해당 되는 컬럼에 1을 부여하고 나머진 0인 벡터로 만드는 one-hot encoding을 공부해보자.
custom coding과 Scikit-learn library를 각각 이용해 one-hot encoding을 진행 해보자
1) custom coding
우선 Jersey Size 컬럼에 어떤 범주값들이 있는지 확인을 해보자
1 |
|
1 |
|
총 3 가지의 범주값을 가짐을 확인했다. 이제 해당 범주값들을 0,1 의 값만 가지는 벡터로 바꾸는 과정을 진행해보자.
우선 우리가 최종적으로 얻어야 하는 결과값은 아래와 같다.
1 |
|
위와 같이 표현하기 위해서는 비교연산자를 이용해 실제값과 비교를 통해 만드는 과정이 필요하다. 아래와 같이 말이다,
1 |
|
1 |
|
boolean 값은 true, false 이지만 실제 숫자로 표현하면 1,0 값으로 이루어지기에 1을 곱하면 숫자로 표현이 가능하다.
위의 원리로 해당 컬럼을 바꿔주어 각 범주별 컬럼을 생성하여 one-hot-encoding을 완성시킨다.
1 |
|
1 |
|
array 형태로 변환되기에 dataframe으로 변환하는 과정이 필요하다.
1 |
|
1 |
|
2) Scikit-learn: OneHotEncoder
이번엔 library를 이용하여 one-hot-encoding을 진행해보자
1 |
|
1 |
|
1 |
|
1 |
|
이제 변환한 one-hot encoding 결과를 기존 데이터 프레임에 합치면 끝이다
1 |
|
1 |
|
Step 2. Label encoding
이전에 0,1 으로만 변환하는 one hot encoding과 다른 label 번호로 encoding을 해주는 개념이다. 이것도 sklearn의 library를 사용할 것이다.
1 |
|
1 |
|
1 |
|
1 |
|
Step 3. Feature selection(filtering)
데이터 분석을 할 때 변수가 너무 많으면 좋지 않은 결과가 나오는 경우가 많으며, 과적합 현상 또한 발생할 수 있다. 그래서 필요한 변수만 선택하여 분석을 하는 과정을 feature selection이라고 칭한다.
1) Variance Filtering
이번에 공부할 것은 Variance Filtering 이다.
- 여러 개의 독립변수가 존재할 때, 각 변수의 분산의 크기가 다르다고 가정
- 그 변수 중에 분산이 작은 변수는 종속 변수에게 미치는 영향이 적을 것이라 판단
- 그래서 그 변수를 제거하는 filtering 수행
- VarianceThreshold : 특정 한 값(Threshold) 보다 작은 변수들은 제외
1 |
|
1 |
|
이제 분산의 기준을 설정하여 해당 기준에 미치지 못하면 제거를 한다.
1 |
|
1 |
|
0, 2번째 있는 컬럼이 해당 기준을 넘었음을 확인했으므로, dataframe을 다시 인덱싱 해준다
1 |
|
1 |
|
2) Correlation filtering
종속변수와 독립변수간의 상관계수로도 필터링이 가능하다.
보스턴 집 값과 관련 독립변수들로 이루어져있는 데이터셋으로 살펴보자
1 |
|
1 |
|
우리가 필요한건 종속변수 MEDV와 다른 독립변수간의 상관계수이다.
1 |
|
1 |
|
마찬가지로 기준점을 설정하여 기준점에 못 미치는 변수는 제거하자
1 |
|
1 |
|
해당 변수만 남기기 위해 dataframe을 변경하자
1 |
|
1 |
|