데이터분석 공부하기
[핸즈온 머신러닝]-제 2장: 머신러닝 프로젝트 처음부터 끝까지 본문
[머신러닝 프로젝트 가이드/체크리스트]
- Define problem & Draw big picture
- Data Collection
- EDA
- Preprocessing : 데이터의 내제 패턴을 ML알고리즘에 잘 드러나도록 데이터 준비
- Model Selection : 여러 모델을 시험 -> 가장 좋은 몇 개 선택
- 모델 튜닝, 최적 솔루션 생성
- 솔루션 출시
- 시스템 론칭, 모니터링, 유지 보수
[실제 데이터로 프로젝트 수행해보기]
-캘리포니아 인구조사 데이터를 사용해 주택 가격 모델 생성
-데이터 : 블록 그룹마다 인구, median 소득, median 주택 가격 등 포함 -> 새로운 데이터(블록)의 median 주택 가격 예측
1. 문제 정의 :
1) Big Picture : "비즈니스의 목적이 무엇인가?", "현재 솔루션은 어떻게 구성이 되어있나?"
2) 시스템 설계 : 지도 학습 vs 비지도 학습 vs 강화 학습; 회귀 vs 분류; 배치 vs 온라인
3) 성능 측정 지표 선택 : 회귀-RMSE, MAE
4) 가정 검사 (check assumption): 당연하다고 생각했던 가정을 확인해보기
2. 데이터 수집 :
1) 작업환경 만들기 : 파이썬 설치, 작업 디렉터리 생성, 파이썬 패키지 설치
2) 데이터 다운로드
3) 데이터 구조 파악 : head(), info(), describe(), value_counts(), hist()
4) 테스트 세트 생성 : train_test_split(random_state=); StratifiedShuffleSplit
*데이터 스누핑 편항(data snooping bias)를 막기위해 데이터를 상세하게 파악하지 않고 데이터를 분리한다.
*계층적 샘플링(Stratified Sampling):계층이라는 동질의 그룹으로 나누고, 테스트 세트가 전체 인구를 대표하도록 계층별 샘플 추출
3. EDA(데이터 이해를 위한 탐색/시각화) :
1) 훈련 세트 복사본 만들기 : .copy()
2) 시각화 : 산점도
[참고] https://stackoverflow.com/questions/59602819/what-do-c-and-s-mean-as-parameters-to-matplotlibs-plot-function
3) 상관관계 : corr(), scatter_matrix() *상관계수는 선형적 상관관계만 측정, 비선형의 경우 독립적이지 않음에도 '0'으로 나옴
4) 특성 조합 실험
-> 시각화, 상관관계, 특성 조합 실험을 통해 데이터를 탐색한다 (이상치, 주목할만한 상관관계, 조합), 빠른 prototype을 만들고 반복한다.
4. Preprocessing(ML 알고리즘을 위한 데이터 준비) :
* 이 작업을 함수로 만들어 자동화 한다: 어떤/새로운 dataset에서도 손쉬운 변환 반복, 향후 project에 사용할 변환 library 점진 구축,
실 시스템에서 알고리즘에 새 데이터 주입 전 변환하는데 사용 가능, 여러 데이터 변환을 쉽게 시도하고 가장 좋은 조합 확인 편리 *
1) 타깃값 분리 : 본 훈련 세트(카피본 x)에서 예측 변수와 타깃값에 같은 변형을 적용하지 않기 위해 서로 분리
2) 데이터 정제 : Null data(dropna(), drop(), fillna(); SimpleImputer()
3) 텍스트/번주형 특성 다루기 : OrdinalEncoder(), OneHotEncoder() *categoires_인스턴스 변수로 카테고리 리스트 조회
-OneHotEncoding 후 출력은 사이파이 희소행렬임으로 toarray()로 넘파이로 변경
-카테고리 특성 수가 많다면(ex-직업, 생물 종류 등), 원-핫 인코딩은 많은 입력 수를 만들어 훈련을 느리게 하고, 성능을 감소시킴 -
-> 범주형 특성관련 숫자형으로 변경 추천 (ex> ocean_proximity -> 해안까지의 거리)
-나만의 변환기 : fit(), transform(), fit_transform()메서드를 구현한 python class 생성
4) 특성 스케일링(feature scaling) : * 훈련데이터에서만 fit() 적용, 훈련/테스트 세트(& new 데이터)에서는 transform()사용
1. 정규화(normalization, a.k.a. mix-max 스케일링) : MinMaxScalar변환기; 0~1 범위 값; (data-최소값)/(최대값-최소값)
2. 표준화(regularlization) : StandardScaler변환기; (data-평균)/(표준편자) -> 분표의 분산= 1 (상한/하안 x; 이상치영향 적음)
*sklearn fit(), transform(), fit_transform: https://dsbook.tistory.com/107
'머신러닝' 카테고리의 다른 글
[핸즈온/완벽가이드] 분류(Classification) (0) | 2021.09.27 |
---|---|
[파이썬 머신러닝 완벽가이드] 1장. 파이썬 기반의 머신러닝과 생태계 이해(Numpy, Pandas) (0) | 2021.09.11 |
[파이썬 머신러닝 완벽가이드] 3장. 평가 (0) | 2021.09.09 |
[파이썬 머신러닝 완벽가이드] 2장. 사이킷런으로 시작하는 머신러닝 (0) | 2021.09.06 |
[핸즈온 머신러닝] 제 1장 기록 (0) | 2021.08.24 |