AICE 시험 대비 요약 : aice 시험 대비 ml 요약

데이터 탐색하기

데이터 전처리

  • 데이터 복사 : df.copy()

  • 결측치 채우기 : fillna

    • 단일 값 : df.fillna( 777 )

    • 주변 값 활용 : df.fillna(method={'backfill', 'bfill', 'pad', 'ffill', None}, default None)

      • method 파라미터 사용시 첫,마지막 값이 결측치 인지 확인해야 한다.

    • 최빈값으로 채우기

      • df[col].mode()[0]

      • df[col].median()

  • 결측치 제거하기 : dropna

    • listwise 방식 : df.dropna

      • record의 항목 중 1개의 값이라도 NA이면 해당 데이터 행 전체 제거

    • pairwise 방식: df.dropna(how='all')

      • 모든 항복이 NA인 데이터 행만 제거

    • 임계치를 설정해서 제거 : df.dropna(thresh=14)

      • NA의 갯수에 따라 제거

    • 특정 열에 있는 NA만 참고하여 결측치를 제거 : df.dropna(subset=['col_name_for_remove']

      • subset에 여러 칼럼 설정시 or 로 제거 됨

  • 이상치 처리하기

    1. 범주형 데이터

      • value_counts()로 값의 분포와 함께 Trash 값이 있는지 확인

      • 이상치 변경 replace('이상치', '정상 값')

    2. 수치형 데이터

      • describe() 로 기술 통계 확인

      • 차트를 그려서 이상치 확인

        • sns.boxplot( df[col] )

      • 이상치 제거

        • q1, q3 구하기 : df['col'].quantile(0.25), df['col'].quantile(0.75)

        • iqr = 1.5*(q3-q1)

        • 제거 : df = df.loc[ df['col'].between(q1-iqr, q3+iqr, inclusive=[True, 'left', 'right'])

      • 이상치 변경

        • 대체 값 설정 : min = q1-iqr, max = q3+iqr

        • 변경 : df.loc[ df[col]<min] = min

데이터 시각화

  1. 기본 사용법

  2. 목적별 차트 그리기

  3. 차트 꾸미기

  1. 기본 사용법

    • 영역 지정 : plt.figure()

  2. 목적별 차트 그리기

    • 선 그래프 plt.plot(), sns.lineplot() : 시간에 따른 데이터의 변화 추세를 볼 대 유용하다.

    • 산점도 scatter() : 두 값이 양의 상관관계인지 음의 상관관계인지를 파악할 수 있다.

    • 히스토그램 hist() : 수치형 데이터의 분포를 나타낸다.

    • 박스 그래프 boxplot() : 수치적 자료로부터 얻어낸 통계량인 5가지 요약 수치

      • 최소값, 1,2,3 분위 값 최대값

    • 상관관계 heatmap() : 상관관계 확인. 모덴 데이터가 continuous 해야 한다

  3. 차트 꾸미기

    • 제목 레이블 추가

    • 범례 추가 legend([col1, col2..])

Feature Engineering

  1. Binning

  2. Encoding

  1. Binning

    • 연속형 변수를 범주형 변수로 만드는 방법

    • ex_ 나이 -> 나이대

  2. Encoding

    • Label Encoding : 문자를 숫자로 변환

      • 숫자로 되어 있어 가중치로 인식하여 값이 왜곡될 수 있다. -> 선형 회귀에는 적용하지 않는다.

    • One-Hot Encoding : 한 개의 요소는 True 나머지 요소는 False로 만들어 주는 기법.

      • get_dummies()

모델링

  1. 데이터셋 분할

    • train_test_split(x, y, stratify=y, test_size=0.3)

      • stratify = 지정된 타겟의 class 비율을 train/validation에 유지시켜준다.

  2. 데이터 스케일링 ( 표준화, 정규화)

    • 칼럼 별 차이를 왜곡하지 않고 공통 척도로 변경하기 위함이다.

    • Standard Scaler 표준화

      경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
      어린이용이며, 설치가 필요없는 브라우저 게임입니다.
      https://s1004games.com

      • 0주위에 표준편차 1의 값으로 배치되도록 표준화하는 것

      • StandarScalert()

    • MinMax Scaler 정규화

      • 모든 피처가 정확하게 [0, 1] 사이에 위치하도록 데이터를 변경

      • MinMaxScaler

  3. 모델 구현

    • 단일 분류예측 모델 : LogisticRegression, KNN, DecisionTree

    • 앙상블 모델 : RandomForest, XGBoost, LGBM, Stacking, Weighted Blending

    • 모델 성능 평가

      • confusion_matrix, classification_report

      • accuracy_score, precision_score, recall_score, f1_score

    • 랜덤포레스트

      • Hyperparameter

        • n_jobs : CPU 사용 갯수

        • max_depth : 최대 깊이, 과대적합 방지용

        • n_estimators: 트리 갯수

        • max_features : 최대로 사용할 feature의 갯수, 과대적합 방지

        • min_samples_split : 트리가 분할할 때 최소 샘플의 갯수, 과대적합 방지

    • XHBoost

      • !pip install xgboost

      • from xgboost import XGBClassifier

      • Hyperparameter

        • learning_rate :

          • 학습율. 너무 큰 학습율은 성능을 떨어뜨리고, 너무 작은 학습율은 학습이 느리다.

          • 적절한 값을 찾아야함. n_estimators와 같이 튜닝. default=0.1

        • n_jobs : CPU 사용 갯수

        • n_estimators : 부스팅 스테이지 수. (랜덤포레스트 트리의 갯수 설정과 비슷한 개념). default=100

        • max_depth : 트리의 깊이. 과대적합 방지용. default=3.

        • subsample : 샘플 사용 비율. 과대적합 방지용. default=1.0

        • max_features : 최대로 사용할 feature의 비율. 과대적합 방지용. default=1.0

딥러닝

  • 딥러닝 모델 구현 DNN

    • 라이브러리

      • import tensorflow as tf

      • from tensorflow.keras.models import Sequential

      • from tensorflow.keras.layers import Dense, Activation, Dropout

    1. 모델 생성 : Sequentional 모델

      • model = Sequential()

      • model.add(Dense(5, activation='relu', input_shape=(78,)))

      • model.add(Dropout(0.3)) .....

      • model.add(Dense(2, activation='sigmoid')) 2진 분류 모델 softmax 다중 분류

    2. 모델 컴파일

      • model.compile()

        • optimizer = 'adam'

        • loss = 'binary_crossentropy' & 'categorical_crossentropy'

        • metrics = []

    3. 모델 학습

      • model.fit(X_train, y_train,

      • validation_data=(X_test, y_test),

      • epochs=20,

      • callbacks=[es, mc],

      • batch_size=16,

      • verbose=1)

    4. Callbacks 함수 설정 : EarlyStopping, ModelCheckpoint

      • EarlyStopping(monitor='val_loss', patience=3, mode='min', verbose=1)

        • monitor : EalryStopping의 기준이 되는 값

        • min_delta : 개선된 것으로 간주하기 위한 최소한의 변화량

        • patience : 개선이 없을 때 최적의 값을 기준으로 몇 번의 epoch를 더 진행할 지 정하는 값

        • mode : monitor가 최소가 되어야 하는 지, 최대가 되어야 하는지 ('val_accuracy'는 max, 'val_loss'는 min)

      • ModelCheckpoint('my_checkpoint.h5', monitor='val_loss', save_best_only=True, verbose=1)

        • filepath : 모델을 저장할 경로

        • monitor : 모델을 저장할 때, 기준이 되는 값

        • mode : auto로 할 경우, 모델이 알아서 min, max 판단하여 모델 저장

    5. 모델 성능 평가(시각화)

 

[출처] https://blog.naver.com/minqt98/222911247401

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수

등록된 글이 없습니다.

대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED