멋쟁이 사자처럼 AI 스쿨 TIL-27

김영민·2022년 11월 2일
0
  • train과 test의 피처 개수가 다르면 오류가 발생
  • train과 test의 피처의 개수가 같더라도 다른 종류의 값이면 제대로 학습 할 수 없다.

sklearn 을 사용하게 되면 일단 학습을 해서 전처리를 하게 됩니다. 어떤 피처가 있는지를 확인하게 됩니다.
test에 없는 값이라도 test에 해당 피처를 생성해 줍니다.
그런데 pandas 의 get_dummies 를 사용하면 각각 전처리를 하기 때문에 다른 값이 있다면 다른 컬럼으로 생성이 되게 됩니다.
이 부분도 피처가 만들어지고 나서 다른 컬럼은 제외해 주는 방법도 있습니다.

One-Hot-Encoding

  • pandas에서는 Ordinal-Encoding을 category 타입에 대해서 cat 속성의 codes 속성으로 지원하고 있습니다.
  • pandas에서는 One-Hot-Encoding을 get_dummies 메서드로 지원하고 있습니다.
  • sklearn에서는 Ordinal-Encoding을 OrdinalEncoder 객체로 지원하고 있습니다.
  • sklearn에서는 One-Hot-Encoding을 OneHotEncoder 객체로 지원하고 있습니다.

참고하기 좋은 자료 : https://pandas.pydata.org/docs/reference/api/pandas.get_dummies.html

  • cross_validate : Evaluate metric(s) by cross-validation and also record fit/score times. 학습결과에 대한 점수와 시간이 나옵니다. 점수를 보고자 할 때는 편리하지만 지정한 metric에 의해서만 점수가 계산됩니다.
  • cross_val_score : Evaluate a score by cross-validation. 점수가 나옵니다.
  • cross_val_predict : Generate cross-validated estimates for each input data point. 예측 값이 그대로 나와서 직접 계산해 볼 수 있습니다. 직접 다양한 측정 공식으로 결과값을 비교해 볼 수 있습니다.

왜 valid 점수와 실제 캐글 점수가 다를까요?
-> vaild는 train 데이터셋에서 검증한것이고, 캐글에 있는 정답셋과 다시 비교하기 때문입니다

결측치를 대체하는 방법은 정답이 없다.
데이터에 따라 다르기도 하고 도메인에 따라 다르기도 합니다. 그래서 여러가지 방법이 있는데요
1) 결측치 행을 그냥 제거하는 방법
2) 결측치를 중앙값으로 대체하는 방법

profile
배운걸 다 흡수하는 제로민

0개의 댓글