본문 바로가기
부트캠프(LIKELION AIS7)/수업

[AI스쿨, 7주차] 캐글 타이타닉 데이터로 점수 올리기(원핫인코딩, 결측치 대체, cross_val, interpolate, 그리드서치 등)

by aimaimee 2023. 4. 22.

[221102] 0503 실습파일 : index_col, ESC+F, 원핫인코딩, ordinal-encoding, 결측치 대체, cross_val, 캐글 / 0504 실습파일 : method, interpolate, 결정트리, 랜덤포레스트, GridSearchCV /

멋쟁이 사자처럼 AI스쿨 7기, 박조은 강사님 강의

221102

스포카 행동강령 https://spoqa.github.io/2018/06/28/code-of-conduct.html
파이썬 행동강령 https://www.python.org/psf/conduct/

✅ 0503 실습 파일

index_col 설정 이유 : PassengerId는 유니크한 값, 피처로 사용하지 않을 것

호칭

  • 두번째 split은 split() 하면 앞 뒤 공백이 제거된다.
  • Q. 한 쪽에만 있는 호칭은 어떻게 처리하면 좋을까? 묶어서 기타 처리
  • 서울시 코로나 기타 타시도 만드는 것 참고
  • ESC + F 셀 내 글자 바꾸기
  • 범주형 데이터의 경우 결측치 처리를 하면 원핫인코딩을 하면 해당 값이 만들어지지 않는다.
  • 의미를 부여하고자 하지 않는다면 따로 결측치 처리를 할 필요가 없다.
  • 특이한 값도 고려하기를 원하면 예외값이라고 만들어주면 예외값이라는 힌트를 머신러닝 알고리즘에 알려주는 효과가 있다.

Cabin

  • F G73 값과 같은 것 : 현실 세계라면 도메인 전문가 등의 의견이나 실제 현업에서 어떻게 쓰이는지 조사를 하고 전처리.
  • 학습용으로 가장 앞 이니셜만 사용
  • Nan 값은 N으로 fillna
  • T는 하나이기 때문에 가까운 요금의 객실인 A로 대체

One-Hot-Encoding

Ordinal-Encoding

  • S, C, Q 를 0, 1, 2로 만들 수도 있다.
  • 순서가 있는 데이터라면 사용
  • 순서가 없는 데이터라면 크다, 작다와 같은 의도치 않은 연산이 될 수 있다.
  • 순서가 없는 데이터는 One-Hot-Encoding 사용
  • Pandas를 사용하는 이유는 수치데이터와 범주형 데이터를 함께 넣어주어도 수치형은 두고 범주형 데이터에 대해서만 인코딩 한다.

결측치 대체

  • train : Age 처리
  • test : Age, Fare(결측치1개) 처리
  • 결측치가 있으면 머신러닝 알고리즘 내부에서 연산을 할 수 없어 오류가 발생한다.
  • 결측치가 있는 피처를 사용하려면 사이킷런에서는 꼭 결측치 대체
  • 현실에서는 함부로 결측치를 채우는 것을 주의
  • 머신러닝 알고리즘에서 오류가 발생하지 않게 하기 위해 결측치를 채운 것이라, 분석할 때도 채운다고 오해하면 안된다.
    학습, 예측 데이터셋
  • set(X-train.columns) - set(X_test.columns) 해서 다른게 있는지 꼭 확인!

sklearn.model_selection

  • cross_validate : 학습결과에 대한 점수와 시간이 출력. 점수를 보고자 할 때는 편리
  • cross_val_score : 점수가 나온다, 평균을 구하면 accuracy값과 일치
  • cross_val_predict : 예측값이 그대로 나온다.
    정확도
  • valid_accuracy 로 제출 파일 이름에 적어주면 캐글에 제출했을 때 비교하기 쉽다.
  • Q. 왜 valid 점수와 실제 캐글 점수가 다를까?
  • valid는 train 데이터셋에서 검증한 것이고, 캐글에 있는 정답셋과 다시 비교하기 때문.
  • Q. train으로 측정한 validation 점수는 0.80인데 캐글 스코어가 0.73이라면 어떤 상황?
  • train 데이터에 과대적합이 일어난 것, test 데이터셋으로 예측했을 때 스코어가 낮게 나왔다.

캐글

  • 0.81~0.83이 점수가 많아서 머신러닝으로 예측했을 때 풀어볼 수 있는 현실적인 점수라고 예상할 수 있다.
  • Top으로 검색하면 상위 솔루션을 찾아볼 수 있다.
  • 솔루션에 대한 투표수가 많고, 메달의 색상을 보고 노트북을 고를 수 있다.

✅ 0504 실습파일

결측치 대체

  • 시계열 데이터에서 순서대로 있을 때 자주 사용
  • ex) 주가 데이터 중 중간에 빠진 날짜에 대한 데이터를 채울 때 사용
  • method : {'backfill', 'bfill', 'pad', 'ffill', None}
  • pad, ffill : 이전값으로 채움
  • backfill, bfill : 다음 값으로 채움
    interpolate
  • 시리즈의 interpolate 문서 : https://pandas.pydata.org/docs/reference/api/pandas.Series.interpolate.html?highlight=interpolate
  • limit_direction="forward"로 하면 맨 앞의 것은 안채워지니까 both로 설정
  • both로 지정하면 위 아래 결측치를 모두 채워주고, 나머지는 채울 방향을 설정

결정트리

  • 성능 변동 폭이 크다.
  • 계층적 접근 방식 : 주간에 에러 발생하면 다음 단계로 전파된다.

랜덤포레스트

  • 위의 단점을 보완한 것이 배깅
  • 배깅 : bootstrap aggregating
  • 부트스트랩(샘플을 뽑는 과정)
  • 조금씩 다른 훈련 데이터에 대해 기초 분류기를 결합시키는 방법
  • 트리들을 비상관화시켜준다.

GridSearchCV


📌JD

전통적인 산업군의 회사 : 업력이 길다, 경력, 복지, 교육


캐글 에어비앤비 노트북 훑어보기
shape확인, info 확인
label 설정
concat? merge?
전처리(age) : missing data, null구함, 기술통계값
feature_name 설정
시각화
피처엔지니어링(datetime 연도, 월, 일 등)
원핫인코딩
Classifier
예측


퀴즈

8/10
맞았는데 다시 보자

  • 정렬결과를 인덱스 값 기준 : sort_index

틀린 것

  • 특정 컬럼에 S,C,Q라는 값이 있을 때, 1,2,3으로 수치화 한다면 어떤 인코딩 방법? Ordinal-Encoding
  • 교차검증(Cross Validate) 결과를 array([67.55, 58.71 ])등과 같이 반환하는 기능은 ? cross_val_predict

    다시 풀어보기......

TIL

사실(Fact) : 원핫인코딩, 결측치 처리, cross-validation 등을 통해 점수를 높여보는 실습을 하였다.
느낌(Feeling) : 척척 쓰레드에 답을 올리는 동안 우주로 다녀왔다...
나는 아직 그 질문 내용까지 이해하지 못했는데, 심도 깊은 질문이 들어오니까 집중력이 날아간다.
교훈 (Finding) : 나는 아직 여러 번 반복해야 숙달과 응용이 되는 단계인 것 같다. 많이 해보자!


카일스쿨 데이터 분석가 취업준비 가이드 시청

https://www.youtube.com/watch?v=CF68twzMIjY
Ep 7. 데이터 분석가 취업 준비 가이드 #1: 자신에 대해 이해하기, 메타인지

왜 데이터를 하고 싶은지, 목표
과거 경험과 데이터를 섞어서 새로운 가치를 만들
공부하다보니 이 분야가 재미있어서 덕업일치로 더 해보고자(내가 왜 재미있는지 포인트를 설명할 수 있다.)

날 잘 이해하고, 삶의 주도성을 가지고 있는 사람

댓글