TECH I.S.

機械学習 - 混同行列

混同行列とは

これは、モデルのどこでエラーが発生したかを評価するために分類問題で使用されるテーブルです。

行は、結果が本来あるべき実際のクラスを表します。列は、作成した予測を表します。この表を使用すると、どの予測が間違っているかを簡単に確認できます。

混同行列の作成

混同行列は、ロジスティック回帰から行われる予測によって作成できます。

今のところ、NumPy を利用して実際の値と予測値を生成します。

import numpy

次に、「実際の」値と「予測された」値の数値を生成する必要があります。

actual = numpy.random.binomial(1, 0.9, size = 1000)predicted = numpy.random.binomial(1, 0.9, size = 1000)

混同行列を作成するには、sklearn モジュールからメトリクスをインポートする必要があります。

from sklearn import metrics

メトリックがインポートされると、実際の値と予測値に対して混同行列関数を使用できます。

confusion_matrix = metrics.confusion_matrix(actual, predicted)

より解釈しやすいビジュアル表示を作成するには、表を混同行列表示に変換する必要があります。

cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])

表示を視覚化するには、matplotlib から pyplot をインポートする必要があります。

import matplotlib.pyplot as plt

最後に、プロットを表示するには、pyplot の関数 plot() と show() を使用できます。

cm_display.plot()plt.show()

実際の例全体を参照してください。

import matplotlib.pyplot as plt import numpy from sklearn import metrics actual = numpy.random.binomial(1,.9,size = 1000) predicted = numpy.random.binomial(1,.9,size = 1000) confusion_matrix = metrics.confusion_matrix(actual, predicted) cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True]) cm_display.plot() plt.show()

結果


実行例(開発準備中) »

結果の説明

作成された混同行列には、4 つの異なる象限があります。

True Negative (左上の象限)False Positive (右上の象限)False Negative (左下の象限)True Positive (右下の象限)

True は値が正確に予測されたことを意味し、False はエラーまたは間違った予測があったことを意味します。

混同行列を作成したので、さまざまな尺度を計算してモデルの品質を定量化できます。まず、精度を見てみましょう。

作成された指標

マトリックスは、分類モデルを評価するのに役立つ多くの有用なメトリックを提供します。

さまざまな尺度には、精度、精度、感度 (再現率)、特異度、および F スコアが含まれます。以下で説明します。


正確さ

精度は、モデルが正しい頻度を測定します。

計算方法

(真陽性 + 真陰性) / 総予測数

Accuracy = metrics.accuracy_score(actual, predicted)

実行例(開発準備中) »


精度

予測されたポジティブのうち、本当にポジティブなのは何パーセントですか?

計算方法

真陽性 / (真陽性 + 偽陽性)

精度は、正しく予測されたネガティブ ケースを評価しません。

Precision = metrics.precision_score(actual, predicted)

実行例(開発準備中) »


感度 (リコール)

すべての陽性症例のうち、陽性と予測される割合は?

感度 (リコールと呼ばれることもあります) は、モデルが陽性を予測するのにどれだけ優れているかを測定します。

これは、真陽性と偽陰性 (誤って陰性と予測された陽性) を調べることを意味します。

計算方法

真陽性 / (真陽性 + 偽陰性)

感度は、モデルが何かをポジティブに予測する方法を理解するのに適しています。

Sensitivity_recall = metrics.recall_score(actual, predicted)

実行例(開発準備中) »


特異性

負の結果を予測するモデルの精度は?

特異性は感度と似ていますが、否定的な結果の観点から見ています。

計算方法

真陰性 / (真陰性 + 偽陽性)

これは Recall の正反対であるため、recall_score 関数を使用して、反対の位置ラベルを取得します。

Specificity = metrics.recall_score(actual, predicted, pos_label=0)

実行例(開発準備中) »


Fスコア

F スコアは、精度と感度の「調和平均」です。

偽陽性と偽陰性の両方のケースを考慮し、不均衡なデータセットに適しています。

計算方法

2 * ((精度 * 感度) / (精度 + 感度))

このスコアは、True Negative 値を考慮していません。

F1_score = metrics.f1_score(actual, predicted)

実行例(開発準備中) »

すべての計算を 1 つに:

#metrics print({"Accuracy":Accuracy,"Precision":Precision,"Sensitivity_recall":Sensitivity_recall,"Specificity":Specificity,"F1_score":F1_score})

実行例(開発準備中) »



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細