邏輯回歸基礎

昨天一直在復盤梯度下降,都沒咋預習邏輯回歸,好在不是很難,來捋捋

邏輯回歸簡介

邏輯回歸是解決分類問題

數學基礎-sigmoid函數

還要回顧一下概率論

極大似然估計

再來看一下對數

邏輯回歸原理

邏輯回歸的損失函數

例子:

分類問題評估

混淆矩陣(重點)

這個得記住,不難記,按英文名記就好了:

真實結果這邊兩個在預測的正例中就是Ture和False

在預測的反例就是倒過來False和Ture

預測的正例就是Positive,反例Negative

所以結合一下:

真正:Ture Positive(TP)? ? ? ? ? ?偽假:False Negative(FN)

偽正:False Positive(FP)? ? ? ? ?真假:Ture Negative(TN)

這樣去理解:

例子:

精確率(Precision)

召回率(recall)

也叫查全,指的是預測為真正例樣本占所有真實正例樣本的比重例如:惡性腫瘤當做正例樣本,則我們想知道模型是否能把所有的惡性腫瘤患者都預測出來

計算方法P = TP+?TP/(TP+ FN)

F1-score

ROC曲線、AUC指標

真正率TPR與假正率FPR

正樣本中被預測為正樣本的概率TPR True Positive Rate

負樣本中被預測為正樣本的概率FPR False Positive Rate

通過這兩個指標可以描述模型對正/負樣本的分辨能力

真正率TRP(True Positive Rate

是作為ROC曲線的Y軸

假正率FPR(False Positive Rate

作X軸

ROC曲線(Receiver Operating Characteristic curve)

是一種常用于評估分類模型性能的可視化工具。ROC曲線以模型的真正率TPR為縱軸,假正率FPR為橫軸,它將模型在不同閾值下的表現以曲線的形式展現出來

AUC (Area Under the ROC Curve)曲線下面積

ROC曲線的優劣可以通過曲線下的面積(AUC來衡量,AUC越大表示分類器性能越好

AUC=0.5時,表示分類器的性能等同于隨機猜測

AUC=1時,表示分類器的性能完美,能夠完全正確地將正負例分類。

圖像中四個特殊點(頂點)的意義要稍微記一下

import pandas as pd
from sklearn.metrics import confusion_matrix,precision_score,recall_score,f1_score, roc_curve, auc
import matplotlib.pyplot as plt
import numpy as np# 設置中文字體支持
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False#todo 1、定義數據集  真實樣本(10個  6個惡性  4個良性)   -》手動設置 惡性(正例) 良性(反例)
y_train=['惡性','惡性','惡性','惡性','惡性','惡性','良性','良性','良性','良性']#todo 2、 定義標簽名
label=['惡性','良性']  #標簽1:正樣本(正例)  標簽2:負樣本(反例)
df_label=['惡性(正例)','良性(假例)']  #這是為了讓格式好看#todo 3、定義 預測結果A   3個惡性 ,4個良性   改完后數據集  3個惡性   7個良性
y_pre_A=['惡性','惡性','惡性',     '良性','良性','良性',    '良性','良性','良性','良性']#todo 4、 把上述的預測結果A 轉換為 混淆矩陣
cm_A=confusion_matrix(y_train,y_pre_A,labels=label)
# print(f"混淆矩陣A:\n{cm_A}")  #美化#todo 5、把混淆矩陣 轉化為 DataFrame格式
df_A=pd.DataFrame(cm_A,index=df_label,columns=df_label)
print(f"預處結果A對應的DataFrame對象:\n{df_A}")#todo 6、 定義 預測結果B 預測對了 -》 6個惡性  1個良性
y_pre_B=['惡性','惡性','惡性','惡性','惡性','惡性','良性','惡性','惡性','惡性']
cm_B=confusion_matrix(y_train,y_pre_B,labels=label)
df_B =pd.DataFrame(cm_B,index=df_label,columns=df_label)
print(f"預處結果B對應的DataFrame對象:\n{df_B}")#總結: 混淆矩陣已經開發完成,接下來,計算他的TP\FN\FP\TN#todo 7 打印預測結果
#精確率  參1: 真實樣本  參2:預測樣本   參3:正例標簽
print(f"預測結果A的精確率:{precision_score(y_train,y_pre_A,pos_label='惡性')}")
print(f"預測結果B的精確率:{precision_score(y_train,y_pre_B,pos_label='惡性')}")#召回率
print(f"預測結果A的召回率:{recall_score(y_train,y_pre_A,pos_label='惡性')}")
print(f"預測結果B的召回率:{recall_score(y_train,y_pre_B,pos_label='惡性')}")#F1值
print(f"預測結果A的F1值:{f1_score(y_train,y_pre_A,pos_label='惡性')}")
print(f"預測結果B的F1值:{f1_score(y_train,y_pre_B,pos_label='惡性')}")# 繪制ROC曲線
# 首先需要將標簽轉換為數字
y_train_num = [1 if label == '惡性' else 0 for label in y_train]
y_pre_A_num = [1 if label == '惡性' else 0 for label in y_pre_A]
y_pre_B_num = [1 if label == '惡性' else 0 for label in y_pre_B]# 為了獲得更平滑的ROC曲線,我們需要生成預測概率而不是硬分類
# 這里我們模擬概率值來演示平滑的ROC曲線
np.random.seed(42)  # 為了結果可重現
y_pre_A_proba = []
for label in y_pre_A:if label == '惡性':# 對于預測為惡性的,我們生成一個相對高的惡性概率y_pre_A_proba.append(np.random.uniform(0.6, 1.0))else:# 對于預測為良性的,我們生成一個相對低的惡性概率y_pre_A_proba.append(np.random.uniform(0.0, 0.4))y_pre_B_proba = []
for label in y_pre_B:if label == '惡性':# 對于預測為惡性的,我們生成一個相對高的惡性概率y_pre_B_proba.append(np.random.uniform(0.7, 1.0))else:# 對于預測為良性的,我們生成一個相對低的惡性概率y_pre_B_proba.append(np.random.uniform(0.0, 0.3))# 計算ROC曲線
fpr_A, tpr_A, _ = roc_curve(y_train_num, y_pre_A_proba)
fpr_B, tpr_B, _ = roc_curve(y_train_num, y_pre_B_proba)# 計算AUC值
auc_A = auc(fpr_A, tpr_A)
auc_B = auc(fpr_B, tpr_B)# 繪制ROC曲線
plt.figure(figsize=(8, 6))
plt.plot(fpr_A, tpr_A, color='blue', lw=2, label=f'預測結果A (AUC = {auc_A:.2f})')
plt.plot(fpr_B, tpr_B, color='red', lw=2, label=f'預測結果B (AUC = {auc_B:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--', label='隨機猜測')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('假正率 (False Positive Rate)')
plt.ylabel('真正率 (True Positive Rate)')
plt.title('ROC曲線對比')
plt.legend(loc="lower right")
plt.grid(True)
plt.show()

由于這個案例是將結果分成了幾個類,而不是計算概率,所以曲線圖變成了折線圖,不過大家理解這個意思就好

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98176.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98176.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98176.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32----W25QXX

W25QXX款圖W25QXX存儲解讀塊--->扇-->頁塊分成128塊一塊64kb一塊分成16扇一扇4kb一個扇區分成16頁,頁的大小是256個字節 當數據傳入W25QXX最小的擦除單元是扇區當已經輸入了一頁的數據,這時RAM的數據會轉存進FLASH,這時會置一個標志位&…

【Kafka】Kafka使用場景用例Kafka用例圖

【Kafka】Kafka使用場景用例&Kafka用例圖一、Kafka用例總圖二、Kafka用例圖示三、Kafka場景案例圖一、Kafka用例總圖 二、Kafka用例圖示 三、Kafka場景案例圖 注:以上圖片來源于網絡,如有不妥請私信刪除!

Altium Designer(AD24)集成開發環境簡介

??《專欄目錄》 目錄 1,概述 2,界面介紹 2,搜索功能簡介 1,概述 Altium Designer 24的原理圖,PCB等設計工作都是在集成開發環境中進行的,本文簡單介紹集成開發環境界面。 2,界面介紹 如下圖所示,Altium Designer 24的集成開發環境,包括: 標題欄:目前設計中文件的…

[論文閱讀] 軟件工程 | 告別“線程安全玄學”:基于JMM的Java類靜態分析,CodeQL3分鐘掃遍GitHub千倉錯誤

告別“線程安全玄學”:基于JMM的Java類靜態分析,CodeQL3分鐘掃遍GitHub千倉錯誤 論文信息類別詳情論文原標題Scalable Thread-Safety Analysis of Java Classes with CodeQL主要作者及機構1. Bjrnar Haugstad Jatten(哥本哈根IT大學&#xff…

jQuery.ajax() 方法核心參數詳解

大家好,歡迎來到程序視點!我是你們的老朋友.小二!jQuery.ajax() 方法核心參數詳解基礎參數url類型:String功能:請求地址,默認當前頁地址。type類型:String(get/post為主,…

LCR 175. 計算二叉樹的深度【簡單】

LCR 175. 計算二叉樹的深度【簡單】 題目描述 某公司架構以二叉樹形式記錄,請返回該公司的層級數。 示例 1:輸入:root [1, 2, 2, 3, null, null, 5, 4, null, null, 4] 輸出: 4 解釋: 上面示例中的二叉樹的最大深度是 4,沿著路…

AI驅動健康升級:新零售企業從“賣產品”到“賣健康”的轉型路徑

隨著健康意識的不斷提升,健康管理增值服務正逐漸成為零售企業的核心競爭力。消費者對“產品服務”的需求激增,企業亟需構建覆蓋健康評估、干預到跟蹤的營養健康管理體系,通過數據化手段提升用戶粘性。在此背景下,AI技術正推動健康…

2025年最新三維WebGIS開發學習路線圖深度解析

地信小白為何學習webgis?我們在后臺經常收到同學們關于地信測繪等專業的吐槽,總結后主要分為以下幾類:第一種吐槽學校理論與實踐脫節的,學校課程偏重理論,缺乏企業級真實項目經驗,導致同學們簡歷空洞、單一…

15-Java-面向對象-標準JavaBean類

文章目錄標準JavaBean類標準JavaBean類 類名需要見名知意成員變量使用private修飾提供至少兩個構造方法 無參構造方法帶全部參數的構造方法 成員方法 提供每一個成員變量對應的setXxx()/getXxx()如果還有其他行為,也需…

AI大模型應用研發工程師面試知識準備目錄

一、大模型核心基礎理論 大模型核心架構:Transformer(Encoder/Decoder結構、自注意力機制、多頭注意力)、GPT系列(Decoder-only)、BERT系列(Encoder-only)的差異與適用場景關鍵技術原理&#xf…

基于單片機汽車防撞系統設計

傳送門 👉👉👉👉單片機作品題目速選一覽表🚀 👉👉👉👉單片機作品題目功能速覽🚀 🔥更多文章戳👉小新單片機-CSDN博客&#x1f68…

《Java線程池面試全解析:從原理到實踐的高頻問題匯總》

線程池作為Java并發編程的核心組件,是面試中的必考知識點。無論是初級開發崗還是資深架構崗,對線程池的理解深度往往能反映候選人的并發編程能力。本文匯總了線程池相關的高頻面試題,并提供清晰、深入的解答,助你輕松應對各類面試…

波特率vs比特率

一、核心定義1. 波特率(Baud Rate)定義:單位時間內傳輸的 “信號符號(Symbol)” 數量,單位為 “波特(Baud)”。這里的 “符號” 是通信中的基本信號單元,指信號在物理層的…

AI 生成式藝術重塑動漫角色創作:從技術邏輯到多元可能性(一)

當《蜘蛛俠:縱橫宇宙》中風格迥異的角色群像驚艷銀幕,當《鬼滅之刃》的 “柱” 系列角色憑借鮮明人設圈粉無數,動漫角色早已超越 “故事載體” 的屬性,成為承載世界觀、傳遞情感的核心符號。傳統動漫角色創作往往依賴團隊數月甚至…

npm install 報錯問題解決 npm install --ignore-scripts

為避免惡意依賴包中的病毒,推薦使用npm命令時添加–ignore-scripts參數,以禁用第三方依賴包的預安裝或安裝后腳本。然而,某些依賴包需這些腳本才能正常工作。# 原 報錯 npm install # 改為 npm install --ignore-scripts我遇到的以下2種報錯都…

四個關于云屬性的四個衛星數據集的介紹

一、前言 Himawari-8/9 (AHI)、Meteosat (SEVIRI)、GOES (ABI)、CLAAS-3,四個數據集/傳感器,它們其實都屬于靜止氣象衛星(GEO)云和輻射產品,在降水、云屬性和能量收支研究中應用很廣,AHI(亞太&a…

browser use完整梳理

brower use完整邏輯梳理 browser use的完整一次運行過程 INFO [service] Using anonymized telemetry, see https://docs.browser-use.com/development/telemetry. WARNING [Agent] ?? DeepSeek models do not support use_visionTrue yet. Setting use_visionFalse for…

C/C++ 與 Lua 互相調用詳解

Lua 是一門輕量級、嵌入式的腳本語言,常常與 C/C 結合使用。通過嵌入 Lua,可以讓應用程序獲得靈活的配置、腳本化邏輯和可擴展性。本文將介紹如何在 C/C 調用 Lua 函數,以及如何讓 Lua 調用 C/C 函數。最后給出一個 完整的示例工程&#xff0…

2025-09-04 HTML2——常用標簽與屬性

文章目錄1 文本標簽1.1 標題 (<h1> - <h6>)1.2 段落 (<p>)1.3 文本格式化1.4 列表1.4.1 無序列表 (<ul>)1.4.2 有序列表 (<ol>)1.5 表格 (<table>)2 屬性2.1 屬性值2.2 全局屬性2.3 特定元素的屬性2.4 布爾屬性2.5 自定義屬性2.6 事件處理…

Cursor安裝使用 與 Cursor網頁端登錄成功,客戶端怎么也登陸不上

Cursor安裝使用 Cursor是一款基于AI技術的智能代碼編輯器&#xff0c;可通過官網&#xff08;https://cursor.sh&#xff09;下載安裝(國內網直接可以訪問)&#xff0c;其核心功能包括代碼自動生成、智能補全和多輪對話編程&#xff0c;支持Windows、MacOS和Linux系統。? 1.…