評估指標(biāo)

==用于衡量模型的最終效果==

一蛾默、背景

在學(xué)習(xí)tensorflow的初級階段哈打,會常常搞不懂,metrics的具體意義和實際用途掩缓,接下來的文章一方面是對接自己的解答,也是一種學(xué)習(xí)路徑的記錄遵岩。

二你辣、基礎(chǔ)

混淆矩陣是理解眾多評價指標(biāo)的基礎(chǔ)。下面是混淆矩陣的表格

image
  • TP:True Positive尘执,預(yù)測為正例舍哄,實際也為正例。
  • FP:False Positive誊锭,預(yù)測為正例表悬,實際卻為負(fù)例。
  • TN:True Negative丧靡,預(yù)測為負(fù)例蟆沫,實際也為負(fù)例。
  • FN:False Negative温治,預(yù)測為負(fù)例饭庞,實際卻為正例。

統(tǒng)計正確預(yù)測的次數(shù)在總的數(shù)據(jù)集中的占比熬荆,==最常用==舟山,tensorflow中是通過記錄每次測試的批次的正確數(shù)量和總體數(shù)量確定的。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Time : 2020/4/4 9:18 下午
# Author : Dale Chen
# Description: 
# File : accuracy.py
# Copyright: (c) 2020 year, 4399 Network CO.ltd. All Rights Reserved.

import numpy as np

labels = np.array([[1, 1, 1, 0],
                   [1, 1, 1, 0],
                   [1, 1, 1, 0],
                   [1, 1, 1, 0]], dtype=np.float)

predictions = np.array([[1, 0, 0, 0],
                        [1, 1, 0, 0],
                        [1, 1, 1, 0],
                        [0, 1, 1, 1]], dtype=np.float)

N_CORRECT = 0
N_ITEM_SEEN = 0


def reset_running_variables():
    """reset variables"""
    global N_CORRECT, N_ITEM_SEEN
    N_CORRECT = 0
    N_ITEM_SEEN = 0


def update_running_variables(labs, preds):
    """update variables"""
    global N_CORRECT, N_ITEM_SEEN
    N_CORRECT += (labs == preds).sum()
    N_ITEM_SEEN += labs.size


def calculate_accuracy():
    """calculate accuracy"""
    global N_CORRECT, N_ITEM_SEEN
    return float(N_CORRECT) / N_ITEM_SEEN


reset_running_variables()
for i in range(len(labels)):
    update_running_variables(labels[i], predictions[I])
    accuracy = calculate_accuracy()
    print("accuracy:", accuracy)

三卤恳、內(nèi)置評估指標(biāo)算子

  • tf.metrics.accuracy()
  • tf.metrics.precision()
  • tf.metrics.recall()
  • tf.metrics.mean_iou()

1. accuracy [??kj?r?si] (準(zhǔn)確率)

==所有預(yù)測正確的樣本(不論正例還是負(fù)例累盗,只看對錯)占總體數(shù)量的比例==

注意一下輸入的數(shù)據(jù)需要是true或者false, 實際上就是比對正確的數(shù)量占總體的百分比

import tensorflow as tf
import numpy as np

l = np.array([[0, 1, 0, 0],
              [0, 0, 0, 0]], dtype=np.float)
p = np.array([[0, 1, 0, 0],
              [0, 0, 0, 1]], dtype=np.float)

labels = tf.reshape(l, [2, 4])
predictions = tf.reshape(p, [2, 4])

op = tf.keras.metrics.BinaryAccuracy()
op.update_state(labels, predictions)

print("accuracy:", op.result().numpy())

//accuracy: 1.0

2.precision (精確度)

==精確率就是指 當(dāng)前劃分到正樣本類別中突琳,被正確分類的比例若债,即真正的正樣本所占所有預(yù)測為正樣本的比例。==

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Time : 2020/4/4 11:46 下午
# Author : Dale Chen
# Description: 
# File : precision.py
# Copyright: (c) 2020 year, 4399 Network CO.ltd. All Rights Reserved.

import numpy as np
import tensorflow as tf

l = np.array([[0, 1, 1, 0],
              [0, 0, 0, 0]])
p = np.array([[0, 1, 0, 0],
              [0, 0, 0, 0]])

labels = tf.reshape(l, [1, 8])
predictions = tf.reshape(p, [1, 8])


op = tf.keras.metrics.Precision()
op.update_state(labels, predictions)

print("precision:", (op.result()).numpy())


//precision: 1

我們有一個樣本數(shù)量為50的數(shù)據(jù)集本今,其中正樣本的數(shù)量為20拆座。但是,在我們所有的預(yù)測結(jié)果中冠息,只預(yù)測出了一個正樣本挪凑,并且這個樣本也確實是正樣本,那么 TP=1逛艰,F(xiàn)P=0躏碳,Precision = TP/(TP+FP) = 1.0,那么我們的模型是不是就很好了呢散怖?當(dāng)然不是菇绵,我們還有19個正樣本都沒有預(yù)測成功. 這時候要使用回招率。

3.recall(回召率)

==召回率即指 當(dāng)前被分到正樣本類別中镇眷,真實的正樣本占所有正樣本的比例咬最,即召回了多少正樣本的比例。Recall = TP/(TP+FN)==

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Time : 2020/4/5 12:19 上午
# Author : Dale Chen
# Description: 
# File : recall.py
# Copyright: (c) 2020 year, 4399 Network CO.ltd. All Rights Reserved.

import numpy as np
import tensorflow as tf

l = np.array([[0, 1, 1, 0],
              [0, 0, 0, 0]])
p = np.array([[0, 1, 0, 0],
              [0, 0, 0, 0]])

labels = tf.reshape(l, [1, 8])
predictions = tf.reshape(p, [1, 8])

op = tf.keras.metrics.Recall()
op.update_state(labels, predictions)

print("recall:", (op.result()).numpy())

//recall: 0.5

3.mean_iou

用于處理分類問題的欠动,需要輸入種類的數(shù)量永乌。標(biāo)簽的格式一定要是[0, 0 , 1, 0]的結(jié)構(gòu),只能有一種結(jié)果具伍, 但是預(yù)測的值可以是有多種結(jié)果翅雏。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Time : 2020/4/4 10:10 下午
# Author : Dale Chen
# Description: 
# File : mean_iou.py
# Copyright: (c) 2020 year, 4399 Network CO.ltd. All Rights Reserved.


import numpy as np
import tensorflow as tf

l = np.array([[0, 1, 0, 0],
              [0, 0, 0, 1]])
p = np.array([[0, 1, 0, 0],
              [0, 0, 1, 0]])

labels = tf.reshape(l, [2, 4])
predictions = tf.reshape(p, [2, 4])

op = tf.keras.metrics.MeanIoU(num_classes=4)
op.update_state(labels, predictions)

print("iou_op", op.result().numpy())
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市人芽,隨后出現(xiàn)的幾起案子望几,更是在濱河造成了極大的恐慌,老刑警劉巖萤厅,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橄抹,死亡現(xiàn)場離奇詭異,居然都是意外死亡祈坠,警方通過查閱死者的電腦和手機害碾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赦拘,“玉大人慌随,你說我怎么就攤上這事√赏” “怎么了阁猜?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹋艺。 經(jīng)常有香客問我剃袍,道長,這世上最難降的妖魔是什么捎谨? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任民效,我火速辦了婚禮憔维,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畏邢。我一直安慰自己业扒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布舒萎。 她就那樣靜靜地躺著程储,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臂寝。 梳的紋絲不亂的頭發(fā)上章鲤,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音咆贬,去河邊找鬼败徊。 笑死,一個胖子當(dāng)著我的面吹牛掏缎,可吹牛的內(nèi)容都是我干的集嵌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼御毅,長吁一口氣:“原來是場噩夢啊……” “哼根欧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起端蛆,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤凤粗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后今豆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫌拣,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年呆躲,在試婚紗的時候發(fā)現(xiàn)自己被綠了异逐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡插掂,死狀恐怖灰瞻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辅甥,我是刑警寧澤酝润,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站璃弄,受9級特大地震影響要销,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夏块,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一疏咐、第九天 我趴在偏房一處隱蔽的房頂上張望纤掸。 院中可真熱鬧,春花似錦浑塞、人聲如沸茁肠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匹颤,卻和暖如春仅孩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背印蓖。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工辽慕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赦肃。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓溅蛉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親他宛。 傳聞我的和親對象是個殘疾皇子船侧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容