[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
- 판다스 get_dummies 설명 : https://pandas.pydata.org/docs/reference/api/pandas.get_dummies.html
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: 자신에 대해 이해하기, 메타인지
왜 데이터를 하고 싶은지, 목표
과거 경험과 데이터를 섞어서 새로운 가치를 만들
공부하다보니 이 분야가 재미있어서 덕업일치로 더 해보고자(내가 왜 재미있는지 포인트를 설명할 수 있다.)
날 잘 이해하고, 삶의 주도성을 가지고 있는 사람
댓글