日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习中的评价指标(分类指标评Accuracy、Precision、Recall、F1-score、ROC、AUC )(回归指标评价MSE、RMSE、MAE、MAPE、R Squared)

發(fā)布時(shí)間:2023/12/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习中的评价指标(分类指标评Accuracy、Precision、Recall、F1-score、ROC、AUC )(回归指标评价MSE、RMSE、MAE、MAPE、R Squared) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1.機(jī)器學(xué)習(xí)中的評(píng)價(jià)指標(biāo)
    • 基礎(chǔ)
    • (一)分類指標(biāo)評(píng)價(jià)
      • 1.Accuracy
      • 2.Precision、查準(zhǔn)率
      • 3.Recall、查全率
      • 4.F1-score
      • 舉個(gè)例子:
      • 5.ROC
      • 6.AUC
    • (二)回歸指標(biāo)評(píng)價(jià)
      • 1.均方誤差(MSE)
      • 2.均方根誤差(RMSE)
      • 3.MAE(平均絕對(duì)誤差)
      • 4.MAPE
      • 5.R Squared

1.機(jī)器學(xué)習(xí)中的評(píng)價(jià)指標(biāo)

簡(jiǎn)要介紹精度、精確率、召回率、P-R曲線、F1 值、TPR、FPR、ROC、AUC等指標(biāo)

基礎(chǔ)

(一)分類指標(biāo)評(píng)價(jià)

在分類任務(wù)中,各指標(biāo)的計(jì)算基礎(chǔ)都來自于對(duì)正負(fù)樣本的分類結(jié)果,用混淆矩陣表示為:

from sklearn.metrics import confusion_matrix y_pred = [0,1,0,1] y_true = [0,1,1,1] confusion_matrix(y_true, y_pred, labels=[1, 0])


下面的表中P或者N都是代表了為預(yù)測(cè)出來的分類,分別代表了正類和負(fù)類,然后T或者F就代表了樣本實(shí)際的分類與預(yù)測(cè)是一樣的還是不一樣的,我覺得這樣去理解,應(yīng)該就不會(huì)混了。

精度

1.Accuracy

定義:(TP+TN)/(TP+FN+FP+TN)
即所有分類正確的樣本占全部樣本的比例

## accuracy import numpy as np from sklearn.metrics import accuracy_score y_pred = [0,1,0,1] y_true = [0,1,1,1] print('ACC:',accuracy_score(y_true,y_pred))


精確率

2.Precision、查準(zhǔn)率

定義:(TP)/(TP+FP)
即預(yù)測(cè)是正例的結(jié)果中,確實(shí)是正例的比例

分母為預(yù)測(cè)為正樣例的個(gè)數(shù) ;分子為預(yù)測(cè)為實(shí)際正樣例被預(yù)測(cè)準(zhǔn)的個(gè)數(shù)

from sklearn import metrics y_pred = [0,1,0,1] y_true = [0,1,1,1] print('Precision',metrics.precision_score(y_true,y_pred))


召回率

3.Recall、查全率

定義:(TP)/(TP+FN)
即所有正例的樣本中,被找出的比例
分母為實(shí)際正樣例的個(gè)數(shù);分子為預(yù)測(cè)為實(shí)際正樣例被預(yù)測(cè)準(zhǔn)的個(gè)數(shù)

from sklearn import metrics y_pred = [0,1,0,1] y_true = [0,1,1,1] print('Recall',metrics.recall_score(y_true,y_pred))

4.F1-score


混合的度量,對(duì)不平衡類別非常有效

from sklearn import metrics y_pred = [0,1,0,1] y_true = [0,1,1,1] print('F1-score:',metrics.f1_score(y_true, y_pred))

舉個(gè)例子:

我們實(shí)際有50個(gè)樣例,50個(gè)負(fù)樣例,然后經(jīng)過分類器分類之后。50個(gè)正樣例中有45個(gè)預(yù)測(cè)為正樣例(預(yù)測(cè)準(zhǔn)了),5個(gè)被預(yù)測(cè)成為了負(fù)樣例。50個(gè)負(fù)樣例中(預(yù)測(cè)錯(cuò)誤),有40個(gè)被預(yù)測(cè)為了負(fù)樣例(預(yù)測(cè)準(zhǔn)了),10個(gè)被預(yù)測(cè)為了正樣例(預(yù)測(cè)錯(cuò)誤)。

根據(jù)這個(gè)例子,我們可以計(jì)算出:

5.ROC

受試者工作特征
定義:根據(jù)預(yù)測(cè)結(jié)果將預(yù)測(cè)樣本排序,最有可能為正樣本的在前,最不可能的在后,依次將樣本預(yù)測(cè)為正樣本,分別計(jì)算當(dāng)前的TPR和FPR,繪制ROC曲線。

6.AUC

Area Under ROC Curve
定義:ROC曲線下的面積

## AUC import numpy as np from sklearn.metrics import roc_auc_score y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) print('AUC socre:',roc_auc_score(y_true, y_scores))

(二)回歸指標(biāo)評(píng)價(jià)

分類問題的評(píng)價(jià)指標(biāo)是準(zhǔn)確率,那么回歸算法的評(píng)價(jià)指標(biāo)就是MSE,RMSE,MAE、R-Squared。下面一一介紹

1.均方誤差(MSE)

MSE (Mean Squared Error)叫做均方誤差。看公式

這里的y是測(cè)試集上的。

用 真實(shí)值-預(yù)測(cè)值 然后平方之后求和平均。

猛著看一下這個(gè)公式是不是覺得眼熟,這不就是線性回歸的損失函數(shù)嘛!!! 對(duì),在線性回歸的時(shí)候我們的目的就是讓這個(gè)損失函數(shù)最小。那么模型做出來了,我們把損失函數(shù)丟到測(cè)試集上去看看損失值不就好了嘛。簡(jiǎn)單直觀暴力!

# coding=utf-8 import numpy as np from sklearn import metrics y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0]) y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2]) # MSE print('MSE:',metrics.mean_squared_error(y_true, y_pred))

源碼:

y_preditc=reg.predict(x_test) #reg是訓(xùn)練好的模型 mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟數(shù)學(xué)公式一樣的

2.均方根誤差(RMSE)

RMSE(Root Mean Squard Error)均方根誤差。

這不就是MSE開個(gè)根號(hào)么。有意義么?其實(shí)實(shí)質(zhì)是一樣的。只不過用于數(shù)據(jù)更好的描述。
例如:要做房?jī)r(jià)預(yù)測(cè),每平方是萬元(真貴),我們預(yù)測(cè)結(jié)果也是萬元。那么差值的平方單位應(yīng)該是 千萬級(jí)別的。那我們不太好描述自己做的模型效果。怎么說呢?我們的模型誤差是 多少千萬?。。。。。。于是干脆就開個(gè)根號(hào)就好了。我們誤差的結(jié)果就跟我們數(shù)據(jù)是一個(gè)級(jí)別的可,在描述模型的時(shí)候就說,我們模型的誤差是多少萬元。

import numpy as np from sklearn import metrics y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0]) y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2]) # RMSE print('RMSE:',np.sqrt(metrics.mean_squared_error(y_true, y_pred)))


源碼:

rmse_test=mse_test ** 0.5

MAE

3.MAE(平均絕對(duì)誤差)


平均絕對(duì)誤差,其能更好地反映預(yù)測(cè)值與真實(shí)值誤差的實(shí)際情況

import numpy as np from sklearn import metrics y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0]) y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2]) # MAE print('MAE:',metrics.mean_absolute_error(y_true, y_pred))


源碼:

mae_test=np.sum(np.absolute(y_preditc-y_test))/len(y_test)

4.MAPE

平均絕對(duì)百分比誤差(Mean Absolute Percentage Error)

范圍[0,+∞),MAPE 為0%表示完美模型,MAPE 大于 100 %則表示劣質(zhì)模型。

可以看到,MAPE跟MAE很像,就是多了個(gè)分母。

注意點(diǎn):當(dāng)真實(shí)值有數(shù)據(jù)等于0時(shí),存在分母0除問題,該公式不可用!

import numpy as np from sklearn import metrics # MAPE需要自己實(shí)現(xiàn) def mape(y_true, y_pred):return np.mean(np.abs((y_pred - y_true) / y_true))y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0]) y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2]) # MAPE print('MAPE:',mape(y_true, y_pred))

5.R Squared

上面的幾種衡量標(biāo)準(zhǔn)針對(duì)不同的模型會(huì)有不同的值。比如說預(yù)測(cè)房?jī)r(jià) 那么誤差單位就是萬元。數(shù)子可能是3,4,5之類的。那么預(yù)測(cè)身高就可能是0.1,0.6之類的。沒有什么可讀性,到底多少才算好呢?不知道,那要根據(jù)模型的應(yīng)用場(chǎng)景來。
看看分類算法的衡量標(biāo)準(zhǔn)就是正確率,而正確率又在0~1之間,最高百分之百。最低0。很直觀,而且不同模型一樣的。那么線性回歸有沒有這樣的衡量標(biāo)準(zhǔn)呢?答案是有的。
那就是R Squared也就R方

懵逼(X2)

慢慢解釋。其實(shí)這個(gè)很簡(jiǎn)單。
上面分子就是我們訓(xùn)練出的模型預(yù)測(cè)的所有誤差。
下面分母就是不管什么我們猜的結(jié)果就是y的平均數(shù)。(瞎猜的誤差)

那結(jié)果就來了。
如果結(jié)果是0,就說明我們的模型跟瞎猜差不多。
如果結(jié)果是1。就說明我們模型無錯(cuò)誤。
如果結(jié)果是0-1之間的數(shù),就是我們模型的好壞程度。
如果結(jié)果是負(fù)數(shù)。說明我們的模型還不如瞎猜。(其實(shí)導(dǎo)致這種情況說明我們的數(shù)據(jù)其實(shí)沒有啥線性關(guān)系)

## R2-score from sklearn.metrics import r2_score y_true = [3, -0.5, 2, 7] y_pred = [2.5, 0.0, 2, 8] print('R2-score:',r2_score(y_true, y_pred))


源碼:

1- mean_squared_error(y_test,y_preditc)/ np.var(y_test)

有些地方回顧不到位,請(qǐng)指教了哈!喜歡的小伙伴就給點(diǎn)個(gè)贊吧。

所有巧合的是要么是上天注定要么是一個(gè)人偷偷的在努力。

公眾號(hào)
專注于學(xué)習(xí)資源、筆記分享,歡迎關(guān)注。我們一起成長(zhǎng),一起學(xué)習(xí)。一直純真著,善良著,溫情地?zé)釔凵?,如果覺得有點(diǎn)用的話,請(qǐng)不要吝嗇你手中點(diǎn)贊的權(quán)力,謝謝我親愛的讀者朋友

It’s never too late to start over,Even at 3 a.m. on a Saturday,It can also be a new starting point for you。Einstein said:“Time is an illusion.”
重新開始永遠(yuǎn)都不晚,就算是周六的凌晨3點(diǎn),也可以成為你新的起點(diǎn)。愛因斯坦說了:“時(shí)間是一種幻覺”

2020年4月12日于重慶城口
好好學(xué)習(xí),天天向上,終有所獲

總結(jié)

以上是生活随笔為你收集整理的机器学习中的评价指标(分类指标评Accuracy、Precision、Recall、F1-score、ROC、AUC )(回归指标评价MSE、RMSE、MAE、MAPE、R Squared)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。