【機械学習】 scikit-learn で精度・再現率・F値を算出する方法【Python】

今回は、2クラス分類で Python の scikit-learn を使った評価指標である、精度(Precision)、再現率(Recall)、F値(F-measure)について調べてみました。

混同行列(Confusion matrix)

2クラス分類で、精度や再現率を求めるときに必要になってくるのが、TP、TN、FP、FN という概念です。これらの4つは分類時の結果からいずれかに分けられるのですが、それを表形式で表したのが混同行列(Confusion matrix)になります。

この例では、「same」「diff」の2クラス分類結果を表しています。

2クラス分類では、陽性(Positive)であるクラスを決めないといけません。

今回は「diff」クラスを陽性として扱っています。ちなみに残りのクラスを陰性クラスと呼びます。

scikit-learn で陽性クラスを指定するには、labels で与えます。

[‘same’, ‘diff’] として、後ろに与えたラベルが陽性クラスの扱いになるようです。

そうすると、以下のように4つの分類が割り当てられます。

  • TP(True Positive):陽性(diff)と予測した中で実際に陽性(diff)
  • TN(True Negative):陰性(same)と予測した中で実際に陰性(same)
  • FP(False Positive):陽性(diff)と予測した中で実際は陰性(same)
  • FN(False Negative):陰性(same)と予測した中で実際は陽性(diff)

少し混乱しそうですが、True がつけば 正解 を表して、Positive が 陽性クラス を表しています。

TP、TN、FP、FN の数をそれぞれ取得するには、flatten 関数を使います。

結果は、以下のようになります。

精度(Precision)

精度(Precision)は、適合率や正確性などともいいます。

精度は「識別器が陽性と判断したもののうち、正しく陽性と判断した割合」を表します。

式で書くと「TP/(TP+FP)」となります。

検索エンジンの例でたとえると、「ある検索ワードで検索してヒットした件数のうち、欲しい(正しい)ページの件数」といえます。

scikit-learn では precision_score で精度を算出することができます。

正解ラベルは、テストデータの正解ラベル(same or diff)になります。

今回は Series 型になっています。

予測ラベルは、テストデータについて分類器が予測したラベル(same or diff)になります。

今回は リスト型になっています。

正解ラベルと予測ラベルは、Series型でもリスト型でもどちらでも問題ないようです。

以下のようなエラーがでました。

これは、ラベルデータ(pos_label)がデフォルトでは「1」となっているため、陽性のラベル(diff)を明示する必要があります。

結果は、無事に以下のように出力されました。

再現率(Recall)

再現率(Recall)は、網羅性を表している指標です。

「テストデータの実際に陽性のデータのうち、正しく陽性と判断した割合」を表します。

式で書くと「TP/(TP+FN)」となります。

検索エンジンの例で例えると、「あるワードで検索して、欲しい情報が手に入る件数のうち、実際に正しく得られた件数」といえます。

scikit-learn では recall_score で再現率を算出することができます。

結果は以下のとおり。

F値(F-measure)

F値(F-measure)は、精度と再現率を合わせたものになります。

scikit-learn では f1_score でF値を算出することができます。

結果は以下のとおり。

関連記事

【Weka】フリーの機械学習ソフトをインストールする方法。

Weka は、GUIで使えるフリーの機械学習ソフトです。 https://ja.wikiped

記事を読む

【機械学習】決定木(decision tree)について。

教師あり学習の一つである決定木(desicion tree)について勉強したことを書いていきます。

記事を読む

【探索】縦型・横型・反復深化法の探索手法の比較。

探索とは、チェスや将棋や囲碁などのゲームをコンピュータがプレイするときに、どの手を指すかを決定するの

記事を読む

【Weka】ARFF 形式から CSV 形式に簡単に変換する方法。

フリーのデータマイニングツールである WEKA では、ARFF 形式と CSV 形式のデータを読み込

記事を読む

【Weka】アソシエーション・ルール(association rule)【機械学習】

フリーの機械学習ツール Weka でアソシエーション・ルール(association rule)を使

記事を読む

【深層学習】 TensorFlow と Keras をインストールする【Python】

今回は、Google Colaboratory 上で、深層学習(DeepLearning)フレームワ

記事を読む

【機械学習】モンテカルロ法(Monte Carlo method)について。

モンテカルロ法(Monte Carlo method)とは、シュミレーションや数値計算を乱数を用いて

記事を読む

【探索】ダイクストラ法・最良優先探索・Aアルゴリズムの比較。

縦型探索や横型探索では、機械的に順序を付け、最小ステップでゴールを目指します。 つまり、

記事を読む

【Weka】CSVファイルを読み込んで決定木を実行。

フリーの機械学習ソフト Weka を使って、CSVファイルを読み込んで決定木(Decision Tr

記事を読む

【機械学習】パーセプトロン(Perceptron)について。

パーセプトロンは、教師あり学習の中でも、入出力モデルベース(eager learning:働き者の学

記事を読む

【MT4】日付と時間を指定してPCを自動起動させる方法【DELL】

今回は、日付と時間を指定してPCを自動的に起動させる方法について紹介し

【MT4】PCが再起動しても自動的に起動させる方法【FX自動売買】

今回は、FX 自動売買用のツールの MT4 で、実行しているPCが再起

【MT4】複数口座を同時に起動させる方法【FX・CFD】

今回は、MT4(メタトレーダー4)で複数口座を同時にログインし、起動さ

【MQL4】スプレッドを取得する方法【MT4】

今回は、MQL4 で対象通貨ペアのスプレッドを取得する方法について紹介

【楽天CFD】取引口座を開設してみた【MT4】

今回は、楽天CFDの取引口座(本番口座)の開設方法について紹介します。

→もっと見る

PAGE TOP ↑