머신러닝

Feature Engineering, Data Manipulation

ROSEV 2021. 7. 15. 23:53

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 확인 및 탐색
  • 데이터 시각화를 통해 인사이트 도출
  • 시각화의 단계
    1. 목적, 목표 지정
      • 발표 상대, 발표 내용, 시각화 방법 선택
    2. 데이터 형태 변환
    3. 프로토타입 만들기
      1. 어떤 언어로, 도구로 구현할지(ex. Python, Tableau)
      2. 해당 언어로 무슨 라이브러리를 사용할지
  • 목적에 따른 시각화의 예시 유형
  • 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