欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python機器學習性能度量利用鳶尾花數(shù)據(jù)繪制P-R曲線

 更新時間:2023年02月15日 11:31:20   作者:fanstuck  
這篇文章主要為大家介紹了Python機器學習性能度量利用鳶尾花數(shù)據(jù)繪制P-R曲線示例學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、性能度量

性能度量目的是對學習期的泛華能力進行評估,性能度量反映了任務需求,在對比不同算法的泛華能力時,使用不同的性能度量往往會導致不同的評判結果。常用度量有均方誤差,錯誤率與精度,查準率與查全率等。

1.錯誤率與精度

這兩種度量既適用于二分類任務,也適用于多分類任務。錯誤率是分類錯誤的樣本數(shù)占樣本總數(shù)的比例,精度則是分類正確的樣本數(shù)占樣本總數(shù)的比例。

2.查準率、查全率與F1

查準率(precision)與查全率(recall)是對于需求在信息檢索、Web搜索等應用評估性能度量適應度高的檢測數(shù)值。對于二分類問題,可將真實類別與算法預測類別的組合劃分為真正例(ture positive)、假證例(false positive)、真反例(true negative)、假反例(false negative)四種情形。顯然TP+FP+TN+FN=樣例總數(shù)。分類結果為混淆矩陣:

      真實情況	                                  預測結果
            正例	                 反例
          正例	         TP(真正例)	           FN(假反例)
          反例	         FP(假正例)	           TN(真反例)

查準率P定義為:

一般來說。查準率高時,查全率往往偏低;而查全率高時,查準率往往偏低。通常只有一些簡單任務中,才可能使查全率和查準率都很高。

二、代碼實現(xiàn):

1.基于具體二分類問題算法實現(xiàn)代碼:

import numpy
import matplotlib
from matplotlib import pyplot as plt
# true = [真實組1,真實組2...真實組N],predict = [預測組1,預測組2...預測組N]
def evaluation(true, predict):
    num = len(true)  # 確定有幾組
    (TP, FP, FN, TN) = ([0] * num for i in range(4))  # 賦初值
    for m in range(0, len(true)):
        if (len(true[m]) != len(predict[m])):  # 樣本數(shù)都不等,顯然是有錯誤的
            print("真實結果與預測結果樣本數(shù)不一致。")
        else:
            for i in range(0, len(true[m])):  # 對每一組數(shù)據(jù)分別計數(shù)
                if (predict[m][i] == 1) and ((true[m][i] == 1)):
                    TP[m] += 1.0
                elif (predict[m][i] == 1) and ((true[m][i] == 0)):
                    FP[m] += 1.0
                elif (predict[m][i] == 0) and ((true[m][i] == 1)):
                    FN[m] += 1.0
                elif (predict[m][i] == 0) and ((true[m][i] == 0)):
                    TN[m] += 1.0
    (P, R) = ([0] * num for i in range(2))
    for m in range(0, num):
        if (TP[m] + FP[m] == 0):
            P[m] = 0  # 預防一些分母為0的情況
        else:
            P[m] = TP[m] / (TP[m] + FP[m])
        if (TP[m] + FN[m] == 0):
            R[m] = 0  # 預防一些分母為0的情況
        else:
            R[m] = TP[m] / (TP[m] + FN[m])
    plt.title("P-R")
    plt.xlabel("P")
    plt.ylabel("R")
    #plt.plot(P, R)
    #plt.show()
if __name__ == "__main__":
    # 簡單舉例
    myarray_ture = numpy.random.randint(0, 2, (3, 100))
    myarray_predict = numpy.random.randint(0, 2, (3, 100))
    evaluation(myarray_ture,myarray_predict)

下面給出利用鳶尾花數(shù)據(jù)集繪制P-R曲線的代碼(主要體現(xiàn)其微互斥性)

2.利用鳶尾花繪制P-R曲線

from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
import numpy as np
iris = datasets.load_iris()
# 鳶尾花數(shù)據(jù)導入
x = iris.data
#每一列代表了萼片或花瓣的長寬,一共4列,每一列代表某個被測量的鳶尾植物,iris.shape=(150,4)
y = iris.target
#target是一個數(shù)組,存儲了data中每條記錄屬于哪一類鳶尾植物,所以數(shù)組的長度是150,所有不同值只有三個
random_state = np.random.RandomState(0)
#給定狀態(tài)為0的隨機數(shù)組
n_samples, n_features = x.shape
x = np.c_[x, random_state.randn(n_samples, 200 * n_features)]
#添加合并生成特征測試數(shù)據(jù)集
x_train, x_test, y_train, y_test = train_test_split(x[y < 2], y[y < 2],
                                                    test_size=0.25,
                                                    random_state=0)
#根據(jù)此模型訓練簡單數(shù)據(jù)分類器
classifier = svm.LinearSVC(random_state=0)#線性分類支持向量機
classifier.fit(x_train, y_train)
y_score = classifier.decision_function(x_test)
from sklearn.metrics import precision_recall_curve
import matplotlib.pyplot as plt
precision, recall, _ =precision_recall_curve(y_test, y_score)
plt.fill_between(recall, precision,color='b')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.ylim([0.0, 1.0])
plt.xlim([0.0, 1.0])
plt.plot(recall, precision)
plt.title("Precision-Recall")
plt.show()

效果:

P-R圖直觀的顯示出學習器在樣本上的查全率、查準率。在進行比較時,若一個休息區(qū)的P-R曲線被另一個學習器的曲線完全“包住”,則可斷言后者的性能優(yōu)于前者。為取得比較合理的判斷依據(jù),將采用“平衡點”(Break-Even Point,BEP)度量對比算法的泛華性能強弱。它是“查準率=查全率”時的取值。但BEP還是過于簡化,更常用F1度量(all為樣例總數(shù)):

以上就是Python機器學習性能度量利用鳶尾花數(shù)據(jù)繪制P-R曲線的詳細內容,更多關于Python鳶尾花數(shù)據(jù)繪制P-R曲線的資料請關注腳本之家其它相關文章!

相關文章

  • python+selenium 定位到元素,無法點擊的解決方法

    python+selenium 定位到元素,無法點擊的解決方法

    今天小編就為大家分享一篇python+selenium 定位到元素,無法點擊的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python中切片操作的示例詳解

    Python中切片操作的示例詳解

    在剛學python時候,我們都知道字符串(String)、列表(list)和元組(tuple)序列化數(shù)據(jù)類型支持切片操作。本文我們將對熟悉的切片操作進行系統(tǒng)學習,感興趣的可以了解一下
    2022-11-11
  • pandas數(shù)據(jù)分列實現(xiàn)分割符號&固定寬度

    pandas數(shù)據(jù)分列實現(xiàn)分割符號&固定寬度

    數(shù)據(jù)分列在數(shù)據(jù)處理中很常見,數(shù)據(jù)分列一般指的都是字符串分割,本文主要介紹了pandas數(shù)據(jù)分列實現(xiàn)分割符號&固定寬度,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 淺析使用Python操作文件

    淺析使用Python操作文件

    文件操作對編程語言的重要性不用多說,如果數(shù)據(jù)不能持久保存,信息技術也就失去了意義。按照本人經驗,IO也是蠻頭疼的一件事,因為不會用得太多,所以總是記不住API,每次都要重新google就會打斷思路,還不一定每次都快速得到正確的文章。
    2017-07-07
  • 解決tensorflow測試模型時NotFoundError錯誤的問題

    解決tensorflow測試模型時NotFoundError錯誤的問題

    今天小編就為大家分享一篇解決tensorflow測試模型時NotFoundError錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python3中利用filter函數(shù)輸出小于某個數(shù)的所有回文數(shù)實例

    python3中利用filter函數(shù)輸出小于某個數(shù)的所有回文數(shù)實例

    今天小編就為大家分享一篇 python3中利用filter函數(shù)輸出小于某個數(shù)的所有回文數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python+Selenium實現(xiàn)一鍵摸魚&采集數(shù)據(jù)

    Python+Selenium實現(xiàn)一鍵摸魚&采集數(shù)據(jù)

    將Selenium程序編寫為 .bat 可執(zhí)行文件,從此一鍵啟動封裝好的Selenium程序,省時省力還可以復用,豈不美哉。所以本文將利用Selenium實現(xiàn)一鍵摸魚&一鍵采集數(shù)據(jù),需要的可以參考一下
    2022-08-08
  • Python在不同目錄下導入模塊的實現(xiàn)方法

    Python在不同目錄下導入模塊的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狿ython在不同目錄下導入模塊的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • python向圖片里添加文字

    python向圖片里添加文字

    這篇文章主要為大家詳細介紹了python向圖片里添加文字,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Pytorch:Conv2d卷積前后尺寸詳解

    Pytorch:Conv2d卷積前后尺寸詳解

    這篇文章主要介紹了Pytorch:Conv2d卷積前后尺寸,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論