전체 글 35

Docker

Docker 학습목표 Docker Hub에서 Docker Image 를 검색한 뒤 사용할 수 있다. 한 개의 Docker Image를 이용해서 Container 를 구축할 수 있다. 두 개 이상의 Docker Container를 이용해서 Container 를 구축할 수 있다. Docker LifeCycle 을 통해 오늘 배우지 않은 부분이 무엇인지를 알 수 있다. Docker - 어플리케이션 실행 환경을 코드로 작성할 수 있고 OS를 격리화하여 관리하는 기술 - Docker Docs 공식 문서가 상당히 자세하고 친절하게 잘 되있으니 자주 참고 (docs.docker.com/engine/reference/commandline/container_run/) # 레지스트리에서 이미지 혹은 레포지토리 가져오기(p..

개발환경

개발환경 학습 목표 터미널 등 CLI 를 접근하고 사용할 수 있다. 파이썬 가상환경을 만들고 사용할 수 있다. 파이썬 가상환경이 왜 필요한지 설명할 수 있다. 깃에 대한 설명을 할 수 있다. 깃을 사용해 프로젝트 관리를 할 수 있다. 깃헙과 같은 사이트를 통해 깃 레포 관리를 할 수 있다. 가상환경 구축 - 개발 당시에 작업했던 환경을 구현해서 발생할 수 있는 다양한 문제를 예방하기 위해 사용 # 가상환경 목록 확인 conda env list # 새로운 환경 생성 conda create --name 'text' # 가상환경 실행 및 종료 conda activate 'text' conda deactivate 'text' Git - 로컬 작업에서 주로 사용되는 명령어 git status git init gi..

Interpreting ML Model

nterpreting ML Model - pdp https://exupery-1.tistory.com/191 뭣이 중헌디! 특성의 중요도 뭣이 중헌디 ! 특성의 중요도 Feature Importance, Permutation Importance, PDP, SHAP 단일 모델일 때는 상대적으로 모델이 왜 이러한 결과를 내었는가 알기 어렵지 않았습니다. Tree 모델에서는 Feature가 얼마.. exupery-1.tistory.com - shap todayisbetterthanyesterday.tistory.com/57 [Python] 중요변수를 추출하기 위한 방법 - Shap Value 구현 *아래 학습은 Fastcampus의 "머신러닝 A-Z까지"라는 인터넷 강의에서 실습한 내용을 복습하며 학습과정을 ..

Feature Importances

Feature Importances Feature Importances(MDI) - 각 특성을 모든 트리에 대해 평균불순도감소(MDI)를 계산한 값 # Feature Importances example rf = pipe.named_steps['randomforestclassifier'] importances = pd.Series(rf.feature_importances_, X_train.columns) import matplotlib.pyplot as plt n = 20 plt.figure(figsize=(10,n/2)) plt.title(f'Top {n} features') importances.sort_values()[-n:].plot.barh(); Permutation importance(순열중요도..

Choose Your ML Problems

Choose Your ML Problems Data Scientist process 1. 비즈니스 문제 - 실무자들과 대화 통해 문제 발견 2. 데이터 문제 - 문제와 관련된 데이터 발견 3. 데이터 문제 해결 - 데이터 처리, 시각화 - 머신러닝/통계 4. 비즈니스 문제 해결 - 데이터 문제 해결 통해 실무자들과 함께 비즈니스 문제 해결 정보 누수 - 분류 문제에서 target 비율이 70%이상 차이 날 경우 불균형 - > 정밀도, 재현율, RIC curve, AUC 같이 사용 # classification_report()로 확인 가능 from sklearn.metrics import classification_report y_pred = pipe.predict(X_val) print(classific..

Model Selection

Model Selection 교차 검증 (Cross-validation) - 데이터 셋이 부족할 때도 사용가능 / k개의 성능 결과를 통합하여 결과를 도출하기 때문에, 일반화된 모델 성능 평가 가능 (시계열 데이터에는 적합하지 않음) - 최적화 : 훈련 데이터로 더 좋은 성능을 얻기 위해 모델을 조정하는 과정 - 일반화 : 학습된 모델이 처음 본 데이터에서 얼마나 좋은 성능을 낼수있는가 Randomized Search CV - 검증하려는 하이퍼 파라미터들의 값 범위를 지정해주면 무작위로 값을 지정해 그 조합을 검증 # Randomized Search CV 예시 from scipy.stats import randint, uniform pipe = make_pipeline( TargetEncoder(), S..

Evaluation Metrics for Classification

Evaluation Metrics for Classification Confusion matrix from sklearn.metrics import plot_confusion_matrix import matplotlib.pyplot as plt fig, ax = plt.subplots() pcm = plot_confusion_matrix(pipe, X_val, y_val, cmap=plt.cm.Blues, ax=ax); # 메트릭스 확인 pcm.confusion_matrix 정확도(Accuracy)는 전체 범주를 모두 바르게 맞춘 경우를 전체 수로 나눈 값입니다: TP+TN / Total 정밀도(Precision)는 Positive로 예측한 경우 중 올바르게 Positive를 맞춘 비율입니다: TP / ..

Random Forests

Random Forests Random Forests - 앙상블 : 한 종류의 데이터로 여러 머신러닝 학습모델(weak base learner, 기본모델)을 만들어 그 모델들의 예측결과를 다수결이나 평균을 내어 예측하는 방법 / 랜덤포레스트는 결정트리를 기본모델로 사용하는 앙상블 방법 - 배깅 : bootstrap aggregating의 줄임말, 샘플을 여러 번 뽑아(Bootstrap) 각 모델을 학습시켜 결과물을 집계(Aggregration)하는 방법 / 회귀문제일 경우 기본모델 결과들의 평균, 분류문제일 경우 다수결로 가장 많은 모델들이 선택한 범주로 예측 Ordinal Ecnoding from category_encoders import OrdinalEncoder # 트리구조에서는 중요한 특성이 상..

Decision Trees

Decision Trees Decision Trees Decision Trees - 분류, 회귀 모두 적용 가능 - Root node, internal node, leaf node / 노드를 연결하는선 Edge - Gini Impurity : leaf가 모두 한 쪽으로 100% 나오지 않는 것을 impurity라 함 , 지니불순도가 낮은 노드를 상위에 배치 - 과적합 해결 법 min_samples_leaf = 말단 노드에 최소한 존재해야하는 수 지정 min_samples_split max_depth - 특성상호작용 : 특성들끼리 서로 상호작용 하는 경우, 트리 모델은 이런 상호작용을 자동으로 걸러냄 파이프라인 # 코드가 간결해지고 가독성 Up pipe = make_pipeline( OneHotEncode..

Logistic Regression

Logistic Regression Logistic Regression - 범주형 데이터도 회귀분석 가능 - Odds : 싶해롹률에 대한 성공확률의 비ection2/Week1] Note 04: Logistic Regression Logistic Regression - 범주형 데이터도 회귀분석 가능 - Odds : 싶해롹률에 대한 성공확률의 비 # Target 데이터 범주 비율 확인 y_train = train[target] y_train.value_counts(normalize=True) # mode(): Return the highest frequency value in a Series. major = y_train.mode()[0] #기준모델 y_pred = [major] * len(y_train) ..