안녕하세요. [파이썬 라이브러리를 활용한 머신러닝], [파이썬을 활용한 머신러닝 쿡북]의 주피터 노트북 코드를 사이킷런 1.0 버전에 맞추어 모두 테스트하여 깃허브에 반영하였습니다. 또한 변경이 필요한 본문을 수정하고 주석을 추가했습니다. 다음 에러타 내용을 참고해 주세요.
감사합니다! 🙂
파이썬 라이브러리를 활용한 머신러닝
- (p62) 위에서 3번째 줄에 다음처럼 주석을 추가합니다. “보스턴 주택가격 데이터셋<주석>옮긴이_ 보스턴 주택가격 데이터셋의 특성에는 흑인 인구 비율이 들어 있어 요즘 시대에 적절치 않다는 의견이 많았습니다. 사이킷런 1.0 버전에서
load_boston()
함수가 deprecated 되었고 1.2 버전에서 삭제될 예정입니다.</주석>을 사용하겠습니다” - (p136, 137) In [79], [80]에서 Axes3D가 자동으로 그림에 추가되는 방식은 matplotlib 3.4 버전에서 deprecated 되었기 때문에 관련 경고를 피하기 위해
ax = Axes3D(figure, elev=-152, azim=-26)
을ax = Axes3D(figure, elev=-152, azim=-26, auto_add_to_figure=False); figure.add_axes(ax)
로 수정합니다. - (p156) In [102]에서 다음처럼
MLPClassifier
객체 생성시max_iter
매개변수를 지정합니다.mlp = MLPClassifier(max_iter=1000, random_state=0)
- (p205) In [26]의 첫 번째 줄에서
np.bool
이 1.20버전부터 deprecated 되었기 때문에 대신bool
을 사용합니다.mask = np.zeros(people.target.shape, dtype=bool)
- (p223) 4번째 줄에 다음과 같이 주석을 추가합니다. “결과를 비교해 보겠습니다.<주석>옮긴이_ 사이킷런 1.2 버전에서
TSNE
클래스의init
매개변수의 기본값이'random'
에서'pca'
로 바뀔 예정입니다.</주석> t-SNE는 새 데이터를..” get_feature_names()
메서드를 가진 변환기에get_feature_names_out()
메서드가 추가되었고get_feature_names()
는 deprecated 되어 1.2 버전에서 삭제될 예정입니다. 따라서 (p281) 마지막 문장과 In [13], (p294) 첫 번째 문장과 In [34], (p297) 마지막 문장과 In[39], (p320) 첫 번째 문장과 In [72], (p423) In [16], (p426) In [21], (p430) In [30], (p434) In [35]와 In [36], (p435) In [38], (p437) In [41], (p450) In [51], (p451) In [55]에서get_feature_names()
를get_feature_names_out()
으로 수정합니다.- (p366) In [52]에서 0 나눗셈 경고를 피하기 위해 다음처럼
zero_division
매개변수를 지정합니다.classification_report(y_test, pred_most_frequent, target_names=["9 아님", "9"], zero_division=0))
- (p443) 아래에서 4번째 줄에 다음처럼 주석을 추가합니다. “설치 페이지(…)를 참고하세요.<주석>옮긴이_ 최신 버전의
tweepy
패키지를 설치할 경우konlpy
에서StreamListener
가 없다는 에러가 발생하므로 3.10버전을 설치해 주세요.pip install tweepy==3.10
</주석> KoNLPy는 5개의…” - (p335) 주석 7번 끝에 다음을 추가합니다. “사이킷런 1.0 버전에서 그룹을 유지하면서 클래스 비율에 맞게 분할하는
StratifiedGroupKFold
가 추가되었습니다.” - (p293) 주석 15번 끝에 다음 문장을 추가합니다. “사이킷런 1.0 버전부터는
PolynomialFeatures
클래스의degree
매개변수에 변환할 최소 차수과 최대 차수를 튜플로 전달할 수 있습니다.”
파이썬을 활용한 머신러닝 쿡북
- (p75, 79, 81, 85, 86, 88, 91, 93, 95, 97, 99, 100, 102, 107, 108, 110) 타이타닉 데이터를 다운로드하는
https://tinyurl.com/titanic_csv
주소에 문제가 생겨서https://bit.ly/titanic_csv_data
로 바꿉니다. - (p177) 덧붙임의 첫 번째 문단 끝에 다음 주석을 추가합니다. “…설치할 수 있습니다.<주석>옮긴이_ 최신 버전의
tweepy
패키지가 설치될 경우konlpy
에서StreamListener
가 없다는 에러가 발생하므로 3.10버전을 설치해 주세요.pip install tweepy==3.10
</주석> - 사이킷런 1.0에서
get_feature_names()
메서드를 가진 변환기에get_feature_names_out()
메서드가 추가되었고get_feature_names()
는 deprecated 되어 1.2 버전에서 삭제될 예정입니다. 따라서 (p128) 마지막 줄, (p129) 1번째 줄, (p156) 위에서 15, 17번째 줄, (p179) 마지막 줄, (180) 2번째 줄, (p493) 아래에서 2번째 줄에서get_feature_names
를get_feature_names_out
으로 수정합니다. - (p229) 위에서 3번째 줄에서
corner
의 값을 정수로 변환하기 위해corner[0].astype('int')
로 수정합니다. - (p252) 9.4절 [해결]의 첫 번째 문장 끝에 다음 주석을 추가합니다. “… 차원을 축소합니다.<주석>옮긴이_ 기본값인
init=None
일 때n_components
가n_samples
나n_features
보다 작으면init='nndsvd'
가 됩니다. 사이킷런 1.1버전부터 이 값이'nndsvda'
로 바뀔 예정입니다.</주석> - (p252) 아래에서 9번째 줄에서
NMF
객체를 만들 때 반복횟수를 늘려주기 위해max_iter
매개변수를 추가합니다.nmf = NMF(n_components=10, max_iter=1000, random_state=1)
- (p283) 11.2절 [해결]의 첫 번째 문장 끝에 다음 주석을 추가합니다. “…모델을 만듭니다.<주석>옮긴이_ 보스턴 주택가격 데이터셋의 특성에는 흑인 인구 비율이 들어 있어 요즘 시대에 적절치 않다는 의견이 많았습니다. 사이킷런 1.0 버전에서
load_boston()
함수가 deprecated 되었고 1.2 버전에서 삭제될 예정입니다.</주석> - 로지스틱 회귀 객체를 만들 때 반복횟수를 늘려주기 위해 (p300) 위에서 15번째 줄, (p311) 위에서 5번째 줄에
max_iter
매개변수를 추가합니다.classifier = LogisticRegression(max_iter=1000)
- (p312) 위에서 4번째 줄에 0 나눗셈 경고를 피하기 위해 다음처럼
zero_division
매개변수를 지정합니다.print(classification_report(target_test, target_predicted, labels=[0,1,2,3], zero_division=0))
- 사이킷런 0.22 버전에서
solver
매개변수의 기본값이'liblinear'
에서'lbfgs'
로 변경되었습니다.'lbfgs'
는'l2'
페널티만 지원합니다. 예제에서'l1'
,'l2'
페널티를 그리드서치로 탐색하기 위해solver='liblinear'
로 지정합니다. 또 반복 횟수를 늘려주기 위해max_iter=1000
을 추가합니다. (p318) 위에서 13번째 줄, (p320) 아래에서 3번째 줄, (p323) 위에서 15번째 줄, (p325) 아래에서 7번째 줄, (p327) 아래에서 8번째 줄, (p329) 위에서 11번째 줄에서LogisticRegression()
을LogisticRegression(solver='liblinear', max_iter=1000)
으로 바꿉니다. - (p331) 위에서 8번째 줄에 반복 횟수를 늘려 주기 위해 max_iter 변수를 추가합니다.
logit = linear_model.LogisticRegressionCV(max_iter=1000, Cs=100)
- (p332) 사이킷런 1.0에서 매개변수 변화에 따른 경고가 발생하지 않으므로 아래에서 4번째 줄을 다음처럼 수정합니다.
logistic = linear_model.LogisticRegression(max_iter=1000)
- 사이킷런 1.0에서 매개변수 변화에 따른 경고가 발생하지 않으므로 위에서 (p333) 5번째 줄에
iid=False
, 7번째 줄에cv=3
, 아래에서 4번째 줄에iid=False
, (p334) 위에서 8번째 줄에cv=3
을 삭제합니다. - (p335) 위에서 2 번째 줄 끝에서 시작되는 문장, 아래에서 3번째 줄에 있는 문장, 마지막 줄에 있는 문장인 “경고를 출력하지 않기 위해 … 로 지정합니다”를 삭제합니다.
- (p355) 결정 트리의
criterion
매개변수 값인mae
가 사이킷런 1.0에서 deprecated되었고 1.2 버전에서 삭제될 예정입니다(mse
도 마찬가지). 대신'absolute_error'
를 사용합니다. 위에서 6번째 줄을decisiontree_mae = DecisionTreeRegressor(criterion="absolute_error", random_state=0)
으로 수정합니다. - (p374) 사이킷런 1.0에서 히스토그램 기반 부스팅이
experimental
모듈 아래에서 벗어났습니다. 따라서 위에서 8번째 줄 끝에서 시작하는 문장부터 12번째 줄까지 다음 내용을 삭제합니다.
“이 클래스들은 실험적이기 때문에 명시적으로 사용한다는 것을 선언해야 합니다.
# 히스토그램 기반의 그레이디언트 부스팅을 활성화하고 라이브러리를 임포트합니다.from sklearn.experimental import enable_hist_gradient_boosting
“ - (p397) 아래에서 2번째 줄에
compute_class_weight
함수에 키워드 매개변수를 추가합니다.compute_class_weight('balanced', classes=[0,1], y=target)