sklearn.metrics.classification_CSV 파일을 통해 보고서 출력 결과 내보내기

어떻게 썼어요?


작업 때문에 sklearn.metrics.classification_report 출력 결과를 보고서에 붙이려고 코드를 썼어요.

샘플 코드


sklearn.metrics.classification_report 기본적으로 문자열만 출력하지만 설정 파라미터output_dict=True를 통해 사전화된 문자열을 되돌려줍니다.사전이 구조화되었음pandas.DataFrame CSV 파일로 가져오고 출력할 수 있다면 하고 싶은 일을 할 수 있습니다.
import numpy as np
import pandas as pd
from sklearn.metrics import classification_report

# https://scikitlearn.org/stable/modules/generated/sklearn.metrics.classification_report.html
y_true = np.array([0, 1, 2, 2, 2])
y_pred = np.array([0, 0, 2, 2, 1])
target_names = ['class 0', 'class 1', 'class 2']

report = classification_report(y_pred=y_pred, y_true=y_true,
                               target_names=target_names, output_dict=True)

# 転置しているのはmetrics名をheaderにするため
report_df = pd.DataFrame(report).T
report_df
"""
	precision	recall	f1-score	support
class 0	0.5	1.000000	0.666667	1.0
class 1	0.0	0.000000	0.000000	1.0
class 2	1.0	0.666667	0.800000	3.0
accuracy	0.6	0.600000	0.600000	0.6
macro avg	0.5	0.555556	0.488889	5.0
weighted avg	0.7	0.600000	0.613333	5.0
"""

# index=Falseにするとラベル名が消えてしまうので注意
report_df.to_csv("report.csv")

pd.read_csv("report.csv", index_col=0)
"""
	precision	recall	f1-score	support
class 0	0.5	1.000000	0.666667	1.0
class 1	0.0	0.000000	0.000000	1.0
class 2	1.0	0.666667	0.800000	3.0
accuracy	0.6	0.600000	0.600000	0.6
macro avg	0.5	0.555556	0.488889	5.0
weighted avg	0.7	0.600000	0.613333	5.0
"""

참고 자료

  • scikit-learn - sklearn.metrics.classification_report
  • 좋은 웹페이지 즐겨찾기