【機械学習】 scikit-learn で不正解データを抽出する方法【Python】

公開日: : 最終更新日:2020/06/07 機械学習 , , , ,

Python の scikit-learn ライブラリを使って機械学習でテストデータを識別(2クラス分類)をしたときに、正解・不正解データを抽出する方法について紹介します。

scikit-learn で正解率を出したいのであれば、混合行列(confusion matrix)を出力すれば良いのですが、これだと正解・不正解データの数しか出力されません。

これだと、不正解データ(正しく識別できなかったデータ)にはどのような傾向があるかなどの分析ができないため、正解・不正解データを抽出したいなぁと思って調べてみました。

classifier.predict について

scikit-learn の「classifier.predict」関数にテストデータを与えると、識別結果(学習した識別器が判断したラベルデータ)がリストで返ってきます。

今回は「classifier.fit」関数で学習データを用いて既に学習済みの場合を想定しています。

2クラス分類でラベル「same」「diff」の場合の結果が以下のようになります。

これが、与えた全てのテストデータの識別結果となります。

テストデータのうち、正解ラベルが same のものを抽出して識別した結果を抽出したい場合は、以下のようにします。

labels_test_data は、テストデータのラベル(正解ラベル「same」or「diff」が並んだもの)となります。

一方、テストデータのうち、正解ラベルが diff のものを抽出して識別した結果を抽出したい場合は、以下のようにします。

numpy.where を使う

whrere は Numpy ライブラリの関数で、条件を満たす要素の位置(インデックス)を返してくれます。

先ほど抽出した、正解ラベルが same のものと、diff のものを利用します。

例えば「正解ラベルが same のうち、識別結果が diff のもの」を不正解データと扱うことができます。

コードで書くと以下のようになります。

リストの要素の位置(インデックス)が返ってくることが分かります。

不正解データの抽出

以上を踏まえて、不正解データ(識別器が誤って識別してしまったデータ)の抽出を行います。

不正解データのパターンとしては、予測した結果のうち、

  • 正解ラベルが same のうち、識別結果が diff と誤って判断してしまった(FalseNegative)。
  • 正解ラベルが diff のうち、識別結果が same と誤って判断してしまった(FalsePositive)。

の2パターンが考えられます。

where で抽出した リストの要素の位置 を iloc で与えて行番号から抽出を行います。

iloc は、pandas で行番号・列番号を指定して抽出を行う関数です。

●FalseNegative

df_2_class_test は元の(学習に使用した特徴量なども含めた)データです。

●FlasePositive

正解データの抽出

不正解データのパターンとしては、予測した結果のうち、

  • 正解ラベルが same のうち、識別結果が same と正しく判断した(TruePositive)。
  • 正解ラベルが diff のうち、識別結果が diff と正しく判断した(TrueNegatice)。

の2パターンが考えられます。

●TruePositive

●TrueNegative

抽出結果

結果が以下のように出力され、それぞれに該当する行と列だけ抽出されていることが確認できます。

関連記事

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

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

記事を読む

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

今回は、2クラス分類で Python の scikit-learn を使った評価指標である、精度(P

記事を読む

【Weka】欠損データを自動的に補完するフィルタを使ってみた。

機械学習で用いるデータについてです。データは完璧なことに越したことはないが、通常は、ある属性の値が入

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【機械学習・手法比較】決定木とナイーブベイズを比較してみた。

同じデータを使って、教師有り機械学習手法の 決定木(Decision Tree)とナイーブベイズ(N

記事を読む

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

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

記事を読む

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

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

記事を読む

【画像認識】 Google画像検索結果を取得する方法 【google image download】

今回は、深層学習(DeepLearning)で画像認識をするための画像データの収集を、Google画

記事を読む

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮

【LaTeX】 見出し付き箇条書きを右にずらす方法【数式の変数説明】

今回は、LaTeX で見出し付き箇条書きの全体の位置を右にずらす方法に

【LaTeX】 余白部分を設定しレイアウトを確認する方法。

今回は、LaTeX の余白部分のレイアウトの変更方法とレイアウトの確認

【LaTeX】 レポートや論文の表紙のテンプレート。

LaTex を使ってレポートや論文を書くときに、表紙をつけると思います

【DTM】 Cubase AI でギターやベースを録音する方法。

今回は、DTM のための DAWソフト Cubase AI でギター(

→もっと見る

PAGE TOP ↑