스택큐힙리스트

어떻게 scikit learn을 사용하여 다중 클래스 문제에 대한 정밀도, 재현율, 정확도 및 f1 점수를 계산합니까? 본문

카테고리 없음

어떻게 scikit learn을 사용하여 다중 클래스 문제에 대한 정밀도, 재현율, 정확도 및 f1 점수를 계산합니까?

스택큐힙리스트 2023. 12. 25. 07:48
반응형

clf = SVC(kernel='linear', C=1)
clf.fit(X, y)
prediction = clf.predict(X_test)
from sklearn.metrics import precision_score, \
recall_score, confusion_matrix, classification_report, \
accuracy_score, f1_score
print '정확도:', accuracy_score(y_test, prediction)
print 'F1 점수:', f1_score(y_test, prediction)
print '재현율:', recall_score(y_test, prediction)
print '정밀도:', precision_score(y_test, prediction)
print '\n 분류 보고서:\n', classification_report(y_test, prediction)
print '\n 혼동 행렬:\n', confusion_matrix(y_test, prediction)
F1 점수:/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:676: DeprecationWarning: 기본 '가중치' 평균화 방법은 사용되지 않으며, 0.18 버전부터는 다중 클래스나 다중 레이블 데이터, 또는 pos_label=None인 경우의 정확도, 재현율 또는 F-점수와 함께 사용할 경우 예외가 발생합니다. '평균화'에 명시적 값을 설정하십시오. 예를 들어, scoring=f1_weighted 대신 scoring=f1을 사용하십시오.
sample_weight=sample_weight)
/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:1172: DeprecationWarning: 기본 '가중치' 평균화 방법은 사용되지 않으며, 0.18 버전부터는 다중 클래스나 다중 레이블 데이터, 또는 pos_label=None인 경우의 정확도, 재현율 또는 F-점수와 함께 사용할 경우 예외가 발생합니다. '평균화'에 명시적 값을 설정하십시오. 예를 들어, scoring=f1_weighted 대신 scoring=f1을 사용하십시오.
sample_weight=sample_weight)
/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:1082: DeprecationWarning: 기본 '가중치' 평균화 방법은 사용되지 않으며, 0.18 버전부터는 다중 클래스나 다중 레이블 데이터, 또는 pos_label=None인 경우의 정확도, 재현율 또는 F-점수와 함께 사용할 경우 예외가 발생합니다. '평균화'에 명시적 값을 설정하십시오. 예를 들어, scoring=f1_weighted 대신 scoring=f1을 사용하십시오.
sample_weight=sample_weight)
0.930416613529

하지만, 나는 다음과 같은 경고 메시지를 받고 있습니다:


/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:1172:
DeprecationWarning: 기본적인 `가중치` 평균화는 폐지되었습니다.
버전 0.18부터, 다중클래스 또는 다중라벨 데이터 또는 pos_label=None과 함께 정밀도, 재현율 또는 F-점수를 사용하는 경우 예외가 발생합니다.
분류자의 메트릭을 올바르게 계산하기 위해 'average' 중 하나(None, 'micro', 'macro', 'weighted', 'samples')의 명시적인 값을 설정하십시오.
예를 들어, scoring=f1 대신 scoring=f1_weighted를 사용하여 교차 검증을 사용하십시오.

불균형한 데이터를 올바르게 처리하여 분류자의 메트릭을 올바르게 계산할 수 있을까요?

답변 1

마지막으로 언급하고 싶은 것은 (이미 알고 있는 경우 건너뛰어도 괜찮습니다) 점수가 분류기에서 이전에 본 적이 없는 데이터를 기반으로 계산되어야만 의미가 있다는 것입니다.
이것은 매우 중요한데, 분류기를 적합시키는 데 사용된 데이터에서 얻은 점수는 완전히 관련이 없습니다.


여기에는 무작위로 섞은 후 레이블 분포를 보존하는 데이터의 무작위 분할을 제공하는 StratifiedShuffleSplit을 사용하는 방법이 있습니다.

from sklearn.datasets import make_classification
from sklearn.cross_validation import StratifiedShuffleSplit
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score, classification_report, confusion_matrix
# 인공 분류 데이터 생성을 위한 유틸리티를 사용합니다.
X, y = make_classification(n_samples=100, n_informative=10, n_classes=3)
sss = StratifiedShuffleSplit(y, n_iter=1, test_size=0.5, random_state=0)
for train_idx, test_idx in sss:
X_train, X_test, y_train, y_test = X[train_idx], X[test_idx], y[train_idx], y[test_idx]
svc.fit(X_train, y_train)
y_pred = svc.predict(X_test)
print(f1_score(y_test, y_pred, average=macro))
print(precision_score(y_test, y_pred, average=macro))
print(recall_score(y_test, y_pred, average=macro))

답변 2

Title: Scikit-learn를 활용한 다중 분류 문제에서의 정밀도, 재현율, 정확도 및 F1 점수 계산 방법
Intro:
Scikit-learn은 파이썬에서 머신러닝 및 데이터 분석 작업을 위한 강력한 도구입니다. 다중 분류 문제에서는 정밀도, 재현율, 정확도 및 F1 점수와 같은 성능 메트릭스들이 중요하게 사용됩니다. 이번 글에서는 Scikit-learn을 사용하여 다중 분류 문제에서 어떻게 정밀도, 재현율, 정확도, F1 점수를 계산하는지 알아보겠습니다.
본문:
1. Scikit-learn 패키지 설치:
Scikit-learn을 사용하기 위해서는 해당 패키지를 우선 설치해야 합니다. 파이썬 환경에서 다음과 같이 설치할 수 있습니다:
```
pip install scikit-learn
```
2. 데이터 준비:
다중 분류를 위한 데이터는 예측하려는 다른 클래스 레이블을 갖고 있어야 합니다. 이를 위해 먼저 데이터를 로드하고 특징(X)과 레이블(y)로 분리해야 합니다.
3. 모델 학습:
선택한 모델을 사용하여 데이터를 학습시켜야 합니다. 이는 Scikit-learn의 `fit()` 함수를 이용하여 쉽게 수행할 수 있습니다.
4. 예측:
학습된 모델을 사용하여 새로운 데이터에 대한 예측을 수행할 수 있습니다. `predict()` 함수를 사용하여 예측값을 얻을 수 있습니다.
5. 성능 메트릭스 계산:
다중 분류 문제에서 정밀도, 재현율, 정확도 및 F1 점수를 계산하는 것은 중요합니다. Scikit-learn은 `classification_report()` 함수를 제공하며, 이를 통해 다중 분류의 성능 메트릭스를 손쉽게 계산할 수 있습니다.
예시 코드:
```python
from sklearn.metrics import classification_report
# 모델 학습 및 예측
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
# 성능 메트릭스 계산
result = classification_report(y_test, y_pred)
print(result)
```
6. 결과 해석:
`classification_report()` 함수는 정밀도, 재현율, F1 점수 및 지원하는 클래스의 총 개수에 대한 몇 가지 지표를 출력합니다. 이를 통해 모델의 성능을 평가하고 다른 클래스 간의 성능을 비교할 수 있습니다.
결론:
Scikit-learn을 사용하면 다중 분류 문제에서 정밀도, 재현율, 정확도 및 F1 점수와 같은 성능 메트릭스를 쉽게 계산할 수 있습니다. `classification_report()` 함수를 사용하여 각 클래스의 성능을 확인하고 모델의 성능을 평가할 수 있습니다. 이를 통해 데이터 분석 및 머신러닝 작업을 효율적으로 수행할 수 있습니다.

반응형
Comments