模型的評估

来源:https://www.cnblogs.com/mambakb/archive/2018/12/22/10160974.html
-Advertisement-
Play Games

前面我們已經實現了七種模型,接下來我們分別會對這七種進行評估,主要通過auccuracy,precision,recall,F1-score,auc。最後畫出各個模型的roc曲線 接下來分別看看各個評分的意義 accuracy(準確率) 對於給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。也 ...


前面我們已經實現了七種模型,接下來我們分別會對這七種進行評估,主要通過auccuracy,precision,recall,F1-score,auc。最後畫出各個模型的roc曲線

接下來分別看看各個評分的意義

accuracy(準確率)

對於給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。也就是損失函數是0-1損失時測試數據集上的準確率。比如有100個數據,其中有70個正類,30個反類。現在分類器分為50個正類,50個反類,也就是說將20個正類錯誤的分為了反類。準確率為80/100 = 0.8

precision(精確率)

表示被”正確被檢索的item(TP)"占所有"實際被檢索到的(TP+FP)"的比例.,這個指標越高,就表示越整齊不混亂。比如還是上述的分類中。在分為反類中有30個分類正確。那麼精確率為30/50 = 0.6

recall(召回率)

所有"正確被檢索的item(TP)"占所有"應該檢索到的item(TP+FN)"的比例。在上述的分類中正類的召回率為50/70 = 0.71。一般情況下準確率高、召回率就低,召回率低、準確率高

F1-score

統計學中用來衡量二分類模型精確度的一種指標。它同時兼顧了分類模型的準確率和召回率。F1分數可以看作是模型準確率和召回率的一種加權平均,它的最大值是1,最小值是0。

auc

ROC曲線下與坐標軸圍成的面積

模型評估

先導入所需要的包

import pandas as pd
import numpy as py
import matplotlib.pyplot as plt
from xgboost import XGBClassifier
from sklearn.metrics import roc_auc_score
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import roc_curve,auc
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from lightgbm import LGBMClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn import svm

data_all = pd.read_csv('D:\\data_all.csv',encoding ='gbk')

X = data_all.drop(['status'],axis = 1)
y = data_all['status']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=2018)
#數據標準化
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

接下定義一個函數實現了評價的方法以及畫出了roc曲線

def assess(y_pre, y_pre_proba):
    acc_score = accuracy_score(y_test,y_pre)
    pre_score = precision_score(y_test,y_pre)
    recall = recall_score(y_test,y_pre)
    F1 = f1_score(y_test,y_pre)
    auc_score = roc_auc_score(y_test,y_pre_proba)
    fpr, tpr, thresholds = roc_curve(y_test,y_pre_proba)
    plt.plot(fpr,tpr,'b',label='AUC = %0.4f'% auc_score)
    plt.plot([0,1],[0,1],'r--',label= 'Random guess')
    plt.legend(loc='lower right')
    plt.title('ROCcurve')
    plt.xlabel('false positive rate')
    plt.ylabel('true positive rate')
    plt.show()

接著我們分別對這七種模型進行評估以及得到的roc曲線圖

#LR
lr = LogisticRegression(random_state = 2018)
lr.fit(X_train, y_train)
pre_lr = lr.predict(X_test)
pre_porba_lr = lr.predict_proba(X_test)[:,1]
assess(pre_lr,pre_porba_lr)

#DecisionTree
dt = DecisionTreeClassifier(random_state = 2018)
dt.fit(X_train , y_train)
pre_dt = dt.predict(X_test)
pre_proba_dt = dt.predict_proba(X_test)[:,1]
assess(pre_dt,pre_proba_dt)

#SVM
svc = svm.SVC(random_state = 2018)
svc.fit(X_train , y_train)
pre_svc = svc.predict(X_test)
pre_proba_svc = svc.decision_function(X_test)
assess(pre_svc,pre_proba_svc)

#RandomForest
rft = RandomForestClassifier()
rft.fit(X_train,y_train)
pre_rft = rft.predict(X_test)
pre_proba_rft = rft.predict_proba(X_test)[:,1]
assess(pre_rft,pre_proba_rft)

#GBDT
gb = GradientBoostingClassifier()
gb.fit(X_train,y_train)
pre_gb = gb.predict(X_test)
pre_proba_gb = gb.predict_proba(X_test)[:,1]
assess(pre_gb,pre_proba_gb)

#XGBoost
xgb_c = XGBClassifier()
xgb_c.fit(X_train,y_train)
pre_xgb = xgb_c.predict(X_test)
pre_proba_xgb = xgb_c.predict_proba(X_test)[:,1]
assess(pre_xgb,pre_proba_xgb)

#LightGBM
lgbm_c = LGBMClassifier()
lgbm_c.fit(X_train,y_train)
pre_lgbm = lgbm_c.predict(X_test)
pre_proba_lgbm = lgbm_c.predict_proba(X_test)[:,1]
assess(pre_lgbm,pre_proba_lgbm)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • zcat 解壓有gzip壓縮的文件,將解壓結果送到標準輸出。 此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、語法 zcat [-fhVL] 文件 2、選項列表 選項 說明 -h | --help 幫助信息 -V | --vers ...
  • 備忘命令: 保持更新,轉載請註明出處。 ...
  • Ubuntu引導安裝 首先是安裝前的準備工作 1.需要安裝的 ubuntu系統的ISO鏡像。 2.easyBCD引導軟體 3.所在的Windows系統(本人win7下安裝) 4.DiskGenius(分區工具) 開始安裝前win7下準備工作 一、 網上下載ubuntu的iso(應該是是官方渠道吧) ...
  • 安裝Windows10 1803 版本後,發現網路上的機器好多不見了。 使用 ping 可以ping 通,但是訪問網路共用提示下麵錯誤。 這個原因是1803 中沒有安裝 SMB1.0 協議。因為 SMB1.0協議比較早,有安全問題, windows 10 在之後的版本中都不預設支持了。 如果想迴避這 ...
  • 1 前景提要 1.1 碎片化問題 分頁與分段 頁是信息的物理單位, 分頁是為了實現非連續分配, 以便解決記憶體碎片問題, 或者說分頁是由於系統管理的需要. 段是信息的邏輯單位,它含有一組意義相對完整的信息, 分段的目的是為了更好地實現共用, 滿足用戶的需要. 頁的大小固定且由系統確定, 將邏輯地址劃分 ...
  • 一 前期準備 1.1 依賴準備 編譯安裝需要依賴的包,如gcc等: yum -y install gcc gcc-c++ make glibc kernel-devel kernel-headers autoconf automake libtool glib2-devel libxml2 libx ...
  • DROP: 刪除表test,並釋放空間,將test刪除的一干二凈。 TRUNCATE: 刪除表test里的內容,並釋放空間,但不刪除表的定義,表的結構還在。 DELETE: 1、刪除指定數據 刪除表test中年齡等於30的且國家為US的數據 2、刪除整個表 僅刪除表test內的所有內容,保留表的定義 ...
  • 我超級推薦的Navicat Premium 12的下載,破解方法 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...