評価指標 機械学習

混合行列の作成

#pandasのインポート
import pandas as pd

#データの読み込み
titanic = pd.read_csv('titanic.csv')
breast = pd.read_csv("breast_cancer.csv")

#予測値のデータ読み込み
titanic_predict = pd.read_csv('titanic_predict.csv')
breast_predict = pd.read_csv('breast_predict.csv')
#答えを変数に入れて,実際に中に入ってるか確認
titanic_answer = titanic["Survived"]
print(titanic_answer.head(),titanic_predict.head())
0    0
1    1
2    1
3    1
4    0
Name: Survived, dtype: int64    0
0  0
1  1
2  0
3  1
4  0
#混同行列を出力する

#使うライブラリを宣言
from sklearn.metrics import confusion_matrix

#混同行列を作成
matrix = confusion_matrix(titanic_answer,titanic_predict)
print(matrix)

#見やすいようにデータフレーム化
matrix = pd.DataFrame(matrix)
display(matrix)
[[398  10]
 [ 31 229]]
01
039810
131229
  • 使うライブラリはsklearnの中のmetricsモジュールの中にある,confusion_matrixというものです.
  • metricsモジュールの中には評価指標で使えるさまざまなものがあります.
  • confusion_matrix(正解,予測)と入れると,混同行列を返してくれます.
  • 行列のままだと見にくいので,データフレームにしました.0か1かが分かりやすいので,この方がいいですね.
  • 0と予測して実際には生きてた,というケースの方が多いみたいですね.

様々な評価指標

#さまざまな評価指標を出力する
#ライブラリの宣言
from sklearn.metrics import accuracy_score,recall_score,precision_score,f1_score

print("タイタニックデータにおける精度,正解率(Accuracy)は",accuracy_score(titanic_answer,titanic_predict))
print("タイタニックデータにおける再現率(recall)は",recall_score(titanic_answer,titanic_predict))
print("タイタニックデータにおける適合率(precision)は",precision_score(titanic_answer,titanic_predict))
print("タイタニックデータにおけるF値(f1 value)は",f1_score(titanic_answer,titanic_predict))
タイタニックデータにおける精度,正解率(Accuracy)は 0.938622754491018
タイタニックデータにおける再現率(recall)は 0.8807692307692307
タイタニックデータにおける適合率(precision)は 0.9581589958158996
タイタニックデータにおけるF値(f1 value)は 0.9178356713426854

評価指標の良し悪し

#numpyというライブラリを使って,すべて0のベクトルを作成
import numpy as np
predict0 = np.repeat(0,len(titanic_answer))

#混同行列を見やすいように出力
display(pd.DataFrame(confusion_matrix(titanic_answer,predict0)))

#精度とF値を比較
print("精度は",accuracy_score(titanic_answer,predict0))
print("F値は",f1_score(titanic_answer,predict0))

0
1
04080
12600
精度は 0.6107784431137725
F値は 0.0
  • numpyというライブラリを使ってすべて0と予測して長さはタイタニックのデータに合わせたpredict0を作りました.
  • 混同行列を作成しました
  • 精度とF値を出力しました

すべて0と予測しても精度の場合だと,そこそこの値が出てしまいます.
F値の場合は全く予測できてないというような結果を出してくれています.
F値を使うと偏りがあるようなデータでも使える指標になる!!

コメント

タイトルとURLをコピーしました