본문 바로가기
파이썬

파이썬 Keras 멀티 클래스 모델에서 혼동 행렬 얻기

by º기록 2020. 10. 11.
반응형

Keras로 다중 클래스 모델을 구축하고 있습니다.

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[checkpoint], validation_data=(X_test, y_test))  # starts training

내 테스트 데이터는 다음과 같습니다 (텍스트 데이터).

X_test
Out[25]: 
array([[621, 139, 549, ...,   0,   0,   0],
       [621, 139, 543, ...,   0,   0,   0]])

y_test
Out[26]: 
array([[0, 0, 1],
       [0, 1, 0]])

예측 생성 후 ...

predictions = model.predict(X_test)
predictions
Out[27]: 
array([[ 0.29071924,  0.2483743 ,  0.46090645],
       [ 0.29566404,  0.45295066,  0.25138539]], dtype=float32)

혼란 매트릭스를 얻기 위해 다음을 수행했습니다.

y_pred = (predictions > 0.5)

confusion_matrix(y_test, y_pred)
Traceback (most recent call last):

  File "<ipython-input-38-430e012b2078>", line 1, in <module>
    confusion_matrix(y_test, y_pred)

  File "/Users/abrahammathew/anaconda3/lib/python3.6/site-packages/sklearn/metrics/classification.py", line 252, in confusion_matrix
    raise ValueError("%s is not supported" % y_type)

ValueError: multilabel-indicator is not supported

그러나 위의 오류가 발생합니다.

Keras에서 다중 클래스 신경망을 수행 할 때 어떻게 혼동 행렬을 얻을 수 있습니까?

 

해결 방법

 

confusion_matrix 에 대한 입력은 핫 인코딩이 아닌 int의 배열이어야합니다.

matrix = metrics.confusion_matrix(y_test.argmax(axis=1), y_pred.argmax(axis=1))

 

참조 페이지 https://stackoverflow.com/questions/50920908

 

 

반응형

댓글