[解決済み] 精度スコアがメトリクス式と一致しない
質問
この混同行列をもとに手動でスコアを計算するにはどうしたらよいですか?
この場合、精度スコアはどうすればいいのでしょうか? tp / (tp + fp) は 99% (102 / 103) となります。ですよね?しかし、精度のスコアは98.36%しかありません。以下のスコアが正しいとすると、なぜ精度のスコアが一致しないのでしょうか? (精度のスコアは94.73% (162/171) で正しいです)
この例は、.NETから入手しました。
https://towardsdatascience.com/grid-search-for-model-tuning-3319b259367e
更新しました。
この画像のような出力を得たい場合、ラベルの順序はどうすればよいでしょうか?
解決方法は?
問題は
TP
と
FP
の混同行列が入れ替わります。
この中で説明されているように 例 の2値分類の場合、ラベルは次のように解釈されます。
真陰性
expected=0, predicted=0
トゥルーポジティブ
expected=1, predicted=1
偽陰性
expected=1, predicted=0
偽陽性
expected=0, predicted=1
あなたの例では、これは次のようになります。
## TN TP FN FP
expected = [0]*102 + [1]*60 + [1]*8 + [0]*1
predicted = [0]*102 + [1]*60 + [0]*8 + [1]*1
print ("precision " + '{:.16f}'.format(precision_score(expected, predicted)))
print ("recall " + '{:.16f}'.format(recall_score(expected, predicted)))
print ("accuracy " + '{:.16f}'.format(accuracy_score(expected, predicted)))
precision 0.9836065573770492
recall 0.8823529411764706
accuracy 0.9473684210526315
ということで、対策は予想通りです。
その 混同行列 は文書化されています こちら
定義によれば、混同行列は、グループに属することが知られているが、グループに属することが予測されるオブザベーションの数に等しいものです。 したがって,2値分類では,真陰性のカウントは C 0,0 です. 偽陰性はC 1,0、真陽性はC 1,1、偽陽性はC 0,1である。
その結果、次のような結果が得られました。
results = confusion_matrix(expected, predicted)
print('TN ' ,results[0][0])
print('TP ' ,results[1][1])
print('FN ' ,results[1][0])
print('FP ' ,results[0][1])
print(results)
TN 102
TP 60
FN 8
FP 1
[[102 1]
[ 8 60]]
ということで、今回も対策はOKです。ただ、混同行列の位置が、通常のように
TP
を左上に配置しました。
対処法は簡単で、手動で
TP
と
TN
(results[0][0],results[1][1]) = (results[1][1],results[0][0])
print(results)
[[ 60 1]
[ 8 102]]
関連
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python百行で韓服サークルの画像クロールを実現する
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] IndentationError: unindent はどの外側インデントレベルにも一致しません。
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Pythonの@decoratorsについてまとめてみました。
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない