ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Machine Learning 실습 (16)
    Machine Learning 2022. 7. 18. 16:40

    5.  모델링(분류 모델 사용하기)

    - knn : K개의 최근접 이웃의 답을 확인하고 test를 예측하는 모델

    - tree : yes 또는 no라고 대답하면서 예측해나가는 모델

    - logistic regression : 선형 분류 모델

    - svm : 서포트 벡터 머신

    from sklearn.neighbors import KNeighborsClassifier # knn분류 모델
    from sklearn.tree import DecisionTreeClassifier # tree 분류 모델
    from sklearn.linear_model import LogisticRegression # Logi 분류 모델
    from sklearn.svm import LinearSVC # svm 분류 모델
    # 모델의 일반적인 성능 확인 => 교차검증 확인
    from sklearn.model_selection import cross_val_score
    # 1. 모델 생성
    knn_model = KNeighborsClassifier(n_neighbors=5) # K == n_neighbors 5개 확인
    # 거리를 계산해서 가장 가까운 값들의 답을 확인하고 투표하여 예측
    tree_model = DecisionTreeClassifier()
    logi_model = LogisticRegression()
    svm_model = LinearSVC()
    
    # 하이퍼 파라미터 -> 모델 내부에 있으면서 과대적합을 제어하는 파라미터(사용자 지정)
    import warnings # 경고창 없애기, 무시
    warnings.filterwarnings(action = 'ignore')
    
    # 일반화 성능 검사 (교차검증)
    # 검증을 5번 실행했을때 모델이 가지는 일반적인 정확도 성능 정도 확인
    knn_result = cross_val_score(knn_model, X_train, y_train, cv = 5)
    tree_result = cross_val_score(tree_model, X_train, y_train, cv = 5)
    logi_result = cross_val_score(logi_model, X_train, y_train, cv = 5)
    svm_result = cross_val_score(svm_model, X_train, y_train, cv = 5)
    # 교차 검증 결과 확인
    print('knn :', knn_result.mean())
    print('tree :', tree_result.mean())
    print('logi :', logi_result.mean())
    print('svm :', svm_result.mean())

     

     

    6. 스케일링

    - 데이터의 범위(단위)를 조정하는 작업

    from sklearn.preprocessing import MinMaxScaler
    # 0 ~ 255 값들의 데이터
    # 단위를 줄여주기
    min_max_sc = MinMaxScaler() # 스케일링 도구 생성
    # 데이터의 단위를 확인 - fit
    min_max_sc.fit(X_train)
    # 데이터의 단위를 변경 - transform()
    # train, test 단위 변경
    X_train_sc = min_max_sc.transform(X_train)
    X_test_sc = min_max_sc.transform(X_test)
    plt.hist(X_train_sc[0])

     

    # 스케일링된 데이터로 교차검증 진행해보기
    # svm 모델에 적용해보기
    svm_result2 = cross_val_score(svm_model, X_train_sc, y_train, cv = 5)
    print('svm2', svm_result2.mean()) # 0.82 -> 0.86
    
    # 모델의 성능 향상 1. 모델측면 -> 하이퍼파라미터조정 2. 데이터측면 -> 데이터수정, 추가

    'Machine Learning' 카테고리의 다른 글

    Machine Learning 실습 (18)  (0) 2022.07.19
    Machine Learning 실습 (17)  (0) 2022.07.18
    Machine Learning 실습 (15)  (0) 2022.07.18
    Machine Learning 실습 (14)  (0) 2022.07.18
    Machine Learning 실습 (13)  (0) 2022.07.15

    댓글

Designed by Tistory.