본문 바로가기

ML&DATA53

3 - 다중 레이블 분류, 다중 출력 분류 3.6 다중 레이블 분류 이진 레이블이 여러 개일 때의 분류를 다중 레이블 분류라고 한다. mnist에서 숫자가 7이상인지와 홀수인지를 학습하는 분류기를 만들어보자. 다중 분류기를 지원하는 KNeighborsClassifier를 사용. from sklearn.neighbors import KNeighborsClassifier y_train_large = (y_train>=7) y_train_odd = (y_train%2==1) y_multilabel = np.c_[y_train_large, y_train_odd] knn_clf = KNeighborsClassifier() knn_clf.fit(X_train, y_multilabel) 손글씨 5를 7미만이고 홀수라는 것을 예측했다. knn_clf.predi.. 2020. 8. 27.
3 - 에러분석 3.5 에러분석 적절한 모델을 찾았다면 이 모델의 성능을 향상시킬 방법을 찾아야 한다. 에러를 분석하여 통찰을 얻을 수 있다. cross_val_predict()함수로 모든 클래스에 대한 예측값을 만들어서 오차 행렬을 만들어 본다. (이진 분류기에서와 마찬가지로 행이 실제 값이고 열이 예측값이다.) (i행 j열 즉 $C_i,j$는 실제 클래스가 i인 것을 j로 예측한 것의 개수를 의미한다.) y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv=3) conf_mx = confusion_matrix(y_train, y_train_pred) conf_mx #array([[5576, 0, 21, 6, 9, 43, 37, 6, 224, 1].. 2020. 8. 27.
3 - 다중분류 3.4 다중분류 다중분류는 여러 개의 클래스를 분류하는 것을 의미한다. SGD, randomforest, naive bayes 등의 분류기는 다중 분류가 가능하지만 로지스틱 회귀나 서포트 벡터 머신 분류기같은 알고리즘은 이진 분류만 가능하다. 여러 개의 이진 분류기를 사용해서 다중분류를 구현할 수도 있다. OvR(OvA) : one-versus-the rest, 클래스마다 이진 분류기를 만들어서 가장 높은 결정점수를 낸 클래스를 선택 OvO : one-versus-one, 모든 가능한 두 개의 클래스 조합($\frac{n(n-1)}{2}$)에 대해 이진 분류기를 만듦. 가장 많이 양성으로 분류된 클래스 선택 OvR : 대부분의 이진 분류 알고리즘이 선호함 OvO : SVM같은 일부 알고리즘은 훈련 세트의.. 2020. 8. 27.
3 - 분류기의 성능 측정 분류기(classifier)의 성능을 측정하기 위해 정확도측정, 오차행렬조사, 정밀도와 재현율측정, ROC 곡선 조사 등을 할 수 있다. https://velog.io/@skyepodium/K-Fold-%EA%B5%90%EC%B0%A8%EA%B2%80%EC%A6%9D (참고 블로그) mnist 손글씨 데이터셋에 대해 SGD분류기(확률적 경사 하강법 분류기)의 성능을 측정해보자. 데이터 가져오기 from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784',version=1) mnist.keys() # dict_keys(['data', 'target', 'feature_names', 'DESCR', 'details', 'categori.. 2020. 8. 25.