Book Title : Hands-On Machine Learning with Scikit-Learn, Keras & TF
지은이 : 오렐리앙 제롱
옮긴이 : 박해선
출판사 : 한빛미디어
코드 출처
https://github.com/rickiepark/handson-ml2
2. 머신러닝 프로젝트 처음부터 끝까지
머신러닝 용어 사전
데이터 스누핑(data snooping)
- 테스트 세트에서 겉으로 드러난 어떤 패턴에 속아 특정 머신러닝 모델을 선택하고 해당 텍스트 세트로 일반화 오차를 추정해서 매우 낙관적인 추정을 얻었지만 실제 시스템을 론칭했을 때 기대한 성능이 나오지 않는 경우
표준 상관계수(standard correlation coefficient) 특징
- 피어슨 상관계수라고도 함
- 상관계수는 선형적인 상관관계(x가 증가하면 y는 증가하거나 감소)만 측정함
- 즉, 비선형적인 관계는 잡을 수 없음
데이터 정제 (null값 처리)
방법 1. Padas
대부분의 알고리즘은 누락된 특성을 다루지 못하기 때문에 이를 처리해야 한다. 이때 3가지 방법 정도 있다
- dropna() : 해당 구역 제거
- drop() : 전체 특성 제거
- fillna() : 특정 값으로 채움
캘리포니아 주택 가격 데이터셋을 사용함
'total_bedrooms' 칼럼에 null 값이 있나 확인
# 총 null값이 몇개
df['total_bedrooms'].isnull().sum()
# 207
# null값이 하나라도 있는지 확인
df['total_bedrooms'].isnull().values.any()
# True
null 값이 있는 부분만 따로 뽑아서 데이터 프레임으로 확인하기
# 평균 값이 537
df['total_bedrooms'][690:700].mean()
# 537.4444444444445
NaN값을 중간값으로 채우기( 중간값!= 평균값)
중간값 534로 696인덱스 값이 채워졌다
median = sample_df['total_bedrooms'].median()
print(median)
# 534.0
# fillna 함수로 채우기
sample_df['total_bedrooms'].fillna(median, inplace = True)
방법 2. SimpleImputer
사이킷런의 SimpleImputer는 누락된 값을 손쉽게 다루도록 해줌
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy = 'median')
# 데이터 타입 확인
sample_df.dtypes
'''
longitude float64
latitude float64
housing_median_age float64
total_rooms float64
total_bedrooms float64
population float64
households float64
median_income float64
median_house_value float64
ocean_proximity object
dtype: object
'''
# 중간값이 수치형 특성에서만 계산될 수 있기 떄문에 object형 특성은 drop
sample_df.drop('ocean_proximity', axis = 1 ,inplace = True)
# 중간값 계산
imputer.fit(sample_df)
# 확인
imputer.statistics_
'''
array([-1.2211e+02, 3.7690e+01, 2.3000e+01, 2.2270e+03, 5.3400e+02,
1.1400e+03, 4.7200e+02, 2.6464e+00, 1.6730e+05])
'''
# 데이터 프레임으로 확인하기
pd.DataFrame(imputer.transform(sample_df), columns = sample_df.columns, index = sample_df.index)
이외에도 null값을 처리하는 방식은 매우 다양함
덕 타이핑(duck)을 지원하는 사이킷런
- 사이킷런은 덕 타이핑을 지원하므로 fit(), transform() 메서드를 구현한 파이썬 클래스를 만들 수 있음
책에서는 전체적인 파이프 라인을 찍먹으로 다뤘지만 블로그에서는 Null 값 처리에 대해서만 요약하였습니다
'Study > Hands-On Machine Learning' 카테고리의 다른 글
[Book] 6. 결정 트리 (0) | 2022.04.23 |
---|---|
[Book] 5. 서포트 벡터 머신 (0) | 2022.04.21 |
[Book] 4. 모델 훈련 (0) | 2022.04.20 |
[Book] 3. 분류 (0) | 2022.04.09 |
[Book]1. 한눈에 보는 머신러닝 (0) | 2022.04.02 |