Feature Engineering이란
- 전공 지식, 창의성 등을 바탕으로 데이터셋의 속성들을 조합하여 새로운 속성을 만드는 것을 말한다
- 예를 들어 BMI지수(몸무게 / (신장 * 신장)) 등이 있다
String의 처리
-
1,000 + 1,000 = 1,0001,000 # 원하는 결과값 = 2000
- 일반적으로 머신러닝 모델링에서 문자열로 이루어진 값을 사용하지 않습니다. (매우 복잡)
- 그렇기 때문에 문자열을 처리해줄 수 있는 방법이 필요합니다.
-
A = 1,000 B = 1,000 A = A.replace(',', '') # 문자열 ,을 공백으로 처리 B = B.replace(',', '') # 문자열 ,을 공백으로 처리 A+B = 2000
- 위의 원하는 결과 값을 위해선 ,를 제거해야합니다
- 이때 사용하는 함수가 replace입니다. replace('바꿔야 하는 문자열', '대체할 문자나 공백')
- 해당 replace의 기능으로는 하나의 문자열만 수정이 가능하기 때문에, 전체 열(컬럼)에 적용하는 방법 필요
- 이때 apply()를 통해 해결합니다.
- apply를 통해 전체 컬럼에 적용할 함수가 필요하며, 이 때 함수는 사용자가 필요한 기능을 정의해주어야 합니다.
-
#사용자 정의 함수 def toInt(string): return int(string.replace(',','')) DataFrame['월급'] = DataFrame['월급'].apply(toInt) DataFrame['바꿔야 하는 문자 열이 들어가 있는 속성 명'].apply(함수명 : 문자를 숫자로 바꾸는 기능)
Na, Null, NaN, Undefined의 차이
- NA: Not Available로, 값이 존재해야하지만 값을 넣지 못하는 상태(값을 모르거나) 이는 통계에서 결측치를 의미
- Null : 값이 없다라는 의미
- NaN : Not a Number 수학적으로 정의가 되지 않는 것을 의미 / pandas에서 NaN(np.nan)은 결측치를 의미
- undefined : 해당 변수가 비워있음을 의미
Data Manipulation(데이터 조작)
- Concat(Concatenate) : 데이터를 붙이는 것
- 아래는 문자열 예시이며, + 으로 문자열을 붙여봅시다.
-
'안녕' + '하' + '세요' # 결과값 : 안녕하세요
- pd.concat([x,y]) # DataFrame의 x와 DataFrame의 y를 결합하는 것을 말하며, 행과 열의 이름이나 인덱스 값이 일치 해야 한다.
- 그렇지 않은 경우 결측치 NaN 값으로 대체
- tranpose()
- 행과 열을 바꾼다(피봇)
- 행과 열을 바꾼다(피봇)
- Merge
- DataFrame.merge("붙일 내용 ex. df2", how = "방법 ex. inner", on = "(기준 feature)"
- Conditioning
- condition = (DataFrame['자본금'] > 100000) # ()괄호 사용 필
- df_subset = df[condition]
- isin
- df_subset([df_subset['동물'].isin(['포유류'])] # df_subset 데이터프레임에서, 동물이라는 속성 중 포유류만 필터
- df_subset[(df_subset['동물'] == '포유류')] # df_subset 데이터프레임에서, 동물이라는 속성 중 포유류만 필터
- Groupby
- df_subset.groupby('동물').mean # 동물에 따라서 숫자형 속성의 평균값 반환
- Tidy 데이터
- 라이브러리에 따라서 요구하는 인풋 데이터 형식이 존재
- 그중 Tidy 형태가 있음
- reset_index() 와 .melt()를 통해 tidy형식으로 변경 가능
- 반대로는 .pivot_table()으로 변경

Data Visualization
- 데이터에 대한 이해를 돕기 위해 시각적으로 데이터를 표현
- 비시각화 방법들로 얻지 못한 데이터의 trend 확인 및 탐색
- 데이터 시각화를 통해 인사이트 도출
- 시각화의 단계
- 목적, 목표 지정
- 발표 상대, 발표 내용, 시각화 방법 선택
- 데이터 형태 변환
- 프로토타입 만들기
- 어떤 언어로, 도구로 구현할지(ex. Python, Tableau)
- 해당 언어로 무슨 라이브러리를 사용할지
- 목적, 목표 지정
- 목적에 따른 시각화의 예시 유형
- 분포 : Pie, Dount, Treemap, Stacked bar
- 관계 : Scatter, Bubble, Hist - Bar
- 비교 : Heatmap, Parallel coordinates, Chernoff face
- 시간 : Line, Connected Scatter
- 공간 : Map
- 불확실성 : Error bar, Confidence band
- https://github.com/ft-interactive/chart-doctor/tree/master/visual-vocabulary
- Python에서는 자주 사용되는 시각화 라이브러리 matplotlib, seaborn이 있음.
'머신러닝' 카테고리의 다른 글
다중선형회귀( Multiple Linear Regression) (0) | 2021.08.03 |
---|---|
단순선형회귀( Simple-Regression ) (0) | 2021.08.02 |
Clustering (0) | 2021.07.31 |
High dimensional data, 차원 축소 (0) | 2021.07.31 |
EDA (0) | 2021.07.15 |