Scikit-Learn 모델 카드 툴킷 데모

TensorFlow.org에서 보기 Google Colab에서 실행 GitHub에서 보기 노트북 다운로드


이 노트북은 Jupyter/Colab 환경에서 scikit-learn 모델과 함께 Model Card Toolkit을 사용하여 모델 카드를 생성하는 방법을 보여줍니다. 당신은에서 모델 카드에 대해 자세히 알아볼 수 있습니다 .


먼저 필요한 패키지를 설치하고 가져와야 합니다.

Pip 20.2로 업그레이드하고 패키지 설치

pip install -q --upgrade pip==20.2
pip install -q -U seaborn scikit-learn model-card-toolkit

런타임을 다시 시작하셨습니까?

Google Colab을 사용하는 경우 위의 셀을 처음 실행할 때 런타임을 다시 시작해야 합니다(런타임 > 런타임 다시 시작...).

패키지 가져오기

scikit-learn을 포함하여 필요한 패키지를 가져옵니다.

from datetime import date
from io import BytesIO
from IPython import display
from model_card_toolkit import ModelCardToolkit
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import plot_roc_curve, plot_confusion_matrix

import base64
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import uuid

데이터 로드

이 예는 사용하여로드 할 수 있습니다 scikit가 배울하는 유방암 위스콘신 진단 데이터 세트를 사용 load_breast_cancer () 함수를.

cancer = load_breast_cancer()

X = pd.DataFrame(, columns=cancer.feature_names)
y = pd.Series(

X_train, X_test, y_train, y_test = train_test_split(X, y)
28     0
157    1
381    1
436    1
71     1
dtype: int64

플롯 데이터

모델 카드에 포함할 데이터에서 여러 플롯을 생성합니다.

# Utility function that will export a plot to a base-64 encoded string that the model card will accept.

def plot_to_str():
    img = BytesIO()
    plt.savefig(img, format='png')
    return base64.encodebytes(img.getvalue()).decode('utf-8')
# Plot the mean radius feature for both the train and test sets

sns.displot(x=X_train['mean radius'], hue=y_train)
mean_radius_train = plot_to_str()

sns.displot(x=X_test['mean radius'], hue=y_test)
mean_radius_test = plot_to_str()



# Plot the mean texture feature for both the train and test sets

sns.displot(x=X_train['mean texture'], hue=y_train)
mean_texture_train = plot_to_str()

sns.displot(x=X_test['mean texture'], hue=y_test)
mean_texture_test = plot_to_str()



기차 모형

# Create a classifier and fit the training data

clf = GradientBoostingClassifier().fit(X_train, y_train)

평가 모델

# Plot a ROC curve

plot_roc_curve(clf, X_test, y_test)
roc_curve = plot_to_str()


# Plot a confusion matrix

plot_confusion_matrix(clf, X_test, y_test)
confusion_matrix = plot_to_str()


모델 카드 만들기

툴킷 및 모델 카드 초기화

mct = ModelCardToolkit()

model_card = mct.scaffold_assets()

모델 카드에 정보 주석 달기 = 'Breast Cancer Wisconsin (Diagnostic) Dataset'
model_card.model_details.overview = (
    'This model predicts whether breast cancer is benign or malignant based on '
    'image measurements.')
model_card.model_details.owners = [
    {'name': 'Model Cards Team', 'contact': ''}
model_card.model_details.references = [
] = str(uuid.uuid4()) = str(

model_card.considerations.ethical_considerations = [{
    'name': ('Manual selection of image sections to digitize could create '
            'selection bias'),
    'mitigation_strategy': 'Automate the selection process'
model_card.considerations.limitations = ['Breast cancer diagnosis']
model_card.considerations.use_cases = ['Breast cancer diagnosis']
model_card.considerations.users = ['Medical professionals', 'ML researchers'] = (
  f'{len(X_train)} rows with {len(X_train.columns)} features') = [
    {'image': mean_radius_train},
    {'image': mean_texture_train}
] = (
  f'{len(X_test)} rows with {len(X_test.columns)} features') = [
    {'image': mean_radius_test},
    {'image': mean_texture_test}
] = (
  'ROC curve and confusion matrix') = [
    {'image': roc_curve},
    {'image': confusion_matrix}


모델 카드 생성

# Return the model card document as an HTML page

html = mct.export_format()