사이킷런 0.20 버전에 맞추어 <핸즈온 머신러닝> 도서에 반영될 내용을 정리하였습니다. 깃허브 주피터 노트북에는 더 많은 내용이 반영되어 있습니다! 🙂
sklearn.preprocessing.Imputer
클래스는 사이킷런 0.22 버전에서 삭제될 예정입니다. 대신 0.20 버전에서 추가된sklearn.impute.SimpleImputer
클래스로 변경합니다.- (p100) 두 번째 문단 시작 부분에 “사이킷런의 Imputer는 누락된 … 지정하여 Imputer의 객체를 생성합니다.”를 “사이킷런의 SimpleImputer는 누락된 … 지정하여 SimpleImputer의 객체를 생성합니다.”로 변경합니다. 첫 번째 코드 블럭에서
from sklearn.preprocessing import Imputer
imputer = Imputer(strategy=”median”)
를
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy=”median”)
로 변경합니다. - (p101) 주석 34의 첫 문장에서 ‘(예를 들면 Imputer(strategy=”median”) )’를 ‘(예를 들면 SimpleImputer(strategy=”median”) )’로 변경합니다.
- (p108, 109) 파이프라인 정의 코드에서 ‘Imputer(strategy=”median”)’을 ‘SimpleImputer(strategy=”median”)’로 변경합니다.
- (p100) 두 번째 문단 시작 부분에 “사이킷런의 Imputer는 누락된 … 지정하여 Imputer의 객체를 생성합니다.”를 “사이킷런의 SimpleImputer는 누락된 … 지정하여 SimpleImputer의 객체를 생성합니다.”로 변경합니다. 첫 번째 코드 블럭에서
OneHotEncoder
클래스가 종전에는 훈련 데이터에 나타난 0~최댓값 사이 범위를 카테고리로 인식하여 원-핫 인코딩하지만 앞으로는 고유한 정수 값 또는 문자열을 원-핫 인코딩할 수 있습니다. 정수 특성과 문자열 특성이 함께 있는 경우에는 에러가 발생합니다. 경고 메세지를 피하고 고유한 값을 사용하는 방식을 선택하기 위해categories
매개변수를'auto'
로 지정합니다.- (p103) 마지막 코드 블럭에서
encoder = OneHotEncoder()
를encoder = OneHotEncoder(categories='auto')
로 변경합니다.
- (p103) 마지막 코드 블럭에서
- 0.22 버전에서
RandomForestClassifier
,RandomForestRegressor
모델의n_estimators
기본값이 10에서 100으로 늘어납니다. 경고 메세지를 피하기 위해 명시적으로 트리 개수를 10으로 지정합니다.- (p114, p116) 코드 블럭에서
RandomForestRegressor()
를RandomForestRegressor(n_estimators=10)
으로 변경합니다. - (p139, p244) 코드 블럭에서
RandomForestClassifier()
를RandomForestClassifier(n_estimators=10)
으로 변경합니다.
- (p114, p116) 코드 블럭에서
- 공개된 훈련 데이터를 다운로드 받는
fetch_mldata
함수가 mldata.org 사이트의 잦은 에러로 openml.org 를 사용하는fetch_openml
함수로 변경되었습니다.- (p124)
mnist = fetch_mldata('MNIST original')
을mnist = fetch_openml('mnist_784', version=1)
로 변경합니다. openml.org의 MNIST 타깃 데이터는 문자열로 저장되어 있으므로mnist.target = mnist.target.astype(np.int)
와 같이 정수로 바꾸는 것이 좋습니다.
- (p124)
- 사이킷런 0.22 버전에서
LogisticRegression
클래스의solver
매개변수 기본값이'liblinear'
에서'lbfgs'
로 변경될 예정입니다. 경고 메세지를 피하고 출력 결과를 일관되게 유지하기 위하여solver
매개변수를'liblinear'
로 설정합니다.- (p192, p244)
LogisticRegression()
을LogisticRegression(solver='liblinear')
로 변경합니다.
- (p192, p244)
SVC
,SVR
클래스의gamma
매개변수 옵션에'auto'
외에'scale'
이 추가되었습니다.'auto'
는1/n_features
, 즉 특성 개수의 역수입니다.'scale'
은1/(n_features * X.std())
로 스케일 조정이 되지 않은 특성에서 더 좋은 결과를 만듭니다. 사이킷런 0.22 버전부터는gamma
매개변수의 기본값이'auto'
에서'scale'
로 변경됩니다. 서포트 벡터 머신을 사용하기 전에 특성을 표준화 전처리하면'scale'
과'auto'
는 차이가 없습니다. 경고를 피하기 위해 명시적으로'auto'
옵션을 지정합니다.- (p213) 맨 아래 코드 블럭에서
SVR(kernel="poly", degree=2, C=100, epsilon=0.1)
을SVR(kernel="poly", gamma='auto', degree=2, C=100, epsilon=0.1)
로 변경합니다. - (p244)
SVC()
를SVC(gamma='auto')
로 변경합니다.
- (p213) 맨 아래 코드 블럭에서
LinearSVC
의verbose
매개변수가 0이 아닐 때max_iter
반복 횟수가 부족하면 경고 메세지가 출력됩니다. 사이킷런 0.20 버전부터는verbose
매개변수에 상관없이max_iter
반복 안에 수렴하지 않을 경우 반복 횟수 증가 경고가 나옵니다. 경고 메세지를 피하기 위해max_iter
매개변수의 기본값을 1,000에서 2,000으로 증가시킵니다.- (p206)
LinearSVC(C=10, loss="hinge")
를LinearSVC(C=10, loss="hinge", max_iter=2000)
으로 변경합니다.
- (p206)