ホームページ  >  記事  >  バックエンド開発  >  Python の混同行列のトリック

Python の混同行列のトリック

WBOY
WBOYオリジナル
2023-06-11 10:43:542461ブラウズ

機械学習とデータ マイニングの人気に伴い、ますます多くのデータ サイエンティストや研究者が高級プログラミング言語である Python を使用してデータを処理および分析し始めています。Python の直観性と使いやすさにより、Python は広く使用されています。深さ 学習や人工知能の分野で広く使用されています。ただし、多くの初心者は Python を使用するときにいくつかの問題に遭遇します。その 1 つは混同行列の難しさです。この記事では、Python での混同行列の使用方法と、混同行列を扱うときに役立ついくつかのテクニックを紹介します。

1.混同行列とは

ディープラーニングとデータマイニングにおいて、混同行列とは、予測結果と実際の結果の差異を比較するために使用される長方形のテーブルです。このマトリックスは、分類アルゴリズムの精度、エラー率、精度、再現率などの重要な指標を含む、分類アルゴリズムのパフォーマンスを示します。混同行列は通常、分類器のパフォーマンスを視覚化し、分類器の改善と最適化のための予測結果の主な参照を提供します。

通常、混同行列は 4 つのパラメーターで構成されます。

  • 真陽性 (TP): 分類アルゴリズムは、陽性クラスを陽性クラスとして正確に予測します。
  • 偽陰性 (FN): 分類アルゴリズムは、陽性クラスを陰性クラスとして誤って予測します。
  • 偽陽性 (FP): 分類アルゴリズムは、陰性クラスを陽性クラスとして誤って予測します。
  • 真陰性 (TN): 分類アルゴリズムは、陰性クラスを陰性クラスとして正確に予測します。

2. 混同行列の計算方法

Python の scikit-learn ライブラリには、混同行列を計算する便利な関数が用意されています。この関数はconfusion_matrix()と呼ばれ、分類子とテストセットの実際の結果の間の入力として使用でき、混同行列のパラメータ値を返します。この関数の構文は次のとおりです。

from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)

このうち、y_true は分類子の正しい結果を表し、y_pred は分類子の予測結果を表し、ラベルはクラス ラベルの名前を表します (指定されていない場合)。 、デフォルトは y_true および y_pred から抽出された値です)、sample_weight は各サンプルの重みを表します (必要ない場合は、このパラメーターを設定しないでください)。

たとえば、次のデータの混同行列を計算する必要があるとします。

y_true = [1, 0, 1, 2, 0, 1]
y_pred = [1, 0, 2, 1, 0, 2]

混同行列を計算するには、次のコードを使用できます。

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_true, y_pred)
print(cm)

The出力結果は次のとおりです:

array([[2, 0, 0],
       [0, 1, 2],
       [0, 1, 0]])

つまり、混同行列は、「1」が「1」として 2 回正しく分類され、「0」が「0」として 1 回正しく分類され、「2」が正しく分類されていることを示しています。 as "2" 「「1」が「2」と誤分類されるケースが 0 件あり、「2」が「1」と誤分類されるケースが 2 件あり、「0」が「2」と誤分類されるケースが 1 回発生しました。

3. 混同行列を表示する

混同行列をより適切に視覚化する必要がある状況は数多くあります。 Python の matplotlib ライブラリは、混同行列を視覚化できます。以下は、matplotlib ライブラリと sklearn.metrics を使用して混同行列を視覚化する Python コードです。

import itertools
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix

def plot_confusion_matrix(cm, classes,
                          normalize=False,
                          title='Confusion matrix',
                          cmap=plt.cm.Blues):
    """
    This function prints and plots the confusion matrix.
    Normalization can be applied by setting `normalize=True`.
    """
    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
        print("Normalized confusion matrix")
    else:
        print('Confusion matrix, without normalization')

    print(cm)

    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(classes))
    plt.xticks(tick_marks, classes, rotation=45)
    plt.yticks(tick_marks, classes)

    fmt = '.2f' if normalize else 'd'
    thresh = cm.max() / 2.
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        plt.text(j, i, format(cm[i, j], fmt),
                 horizontalalignment="center",
                 color="white" if cm[i, j] > thresh else "black")

    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')

# Compute confusion matrix
cnf_matrix = confusion_matrix(y_test, y_pred)
np.set_printoptions(precision=2)

# Plot non-normalized confusion matrix
plt.figure()
plot_confusion_matrix(cnf_matrix, classes=class_names,
                      title='Confusion matrix, without normalization')

# Plot normalized confusion matrix
plt.figure()
plot_confusion_matrix(cnf_matrix, classes=class_names, normalize=True,
                      title='Normalized confusion matrix')

plt.show()

上記のコードでは、plot_confusion_matrix() という名前のカスタム関数を定義します。この関数は、混同行列のパラメータ、カテゴリ名のテキスト文字列をパラメータとして受け取り、混同行列をカラー イメージとして出力します。混同行列の各セルの色は、その値のサイズを表します。次に、それぞれの真のカテゴリと予測されたカテゴリを使用して混同行列を計算し、上で定義した Lot_confusion_matrix() 関数を使用して混同行列を表す必要があります。

4. 概要

Python 言語は、データ サイエンティストや研究者がディープ ラーニングや人工知能のデータ分析をより迅速に実行できるようにする、多数の視覚化およびデータ分析ライブラリを提供します。この記事では、混同行列とそのアプリケーション、Python で混同行列を計算する方法、および matplotlib ライブラリを使用して混同行列のグラフィックを生成する方法を紹介します。混同行列技術は、ディープラーニングや人工知能の分野で重要な応用分野があるため、混同行列技術を習得することが非常に必要です。

以上がPython の混同行列のトリックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。