【機器學習】在【Pycharm】中的實踐教程:使用【邏輯回歸模型】進行【乳腺癌檢測】

目錄

案例背景

具體問題

1. 環境準備

小李的理解

知識點

2. 數據準備

2.1 導入必要的庫和數據集

小李的理解

知識點

2.2 數據集基本信息

小李的理解

知識點

注意事項

3. 數據預處理

3.1 劃分訓練集和測試集

小李的理解

知識點

注意事項

3.2 數據標準化

小李的理解

知識點

注意事項

4. 模型訓練

4.1 初始化和訓練邏輯回歸模型

運行結果

?編輯

小李的理解

知識點

注意事項

5. 模型評估

5.1 預測結果

小李的理解

知識點

注意事項

5.2 計算準確率

小李的理解

知識點

注意事項

5.3 混淆矩陣

小李的理解

知識點

注意事項

5.4 分類報告

小李的理解

知識點

注意事項

6. 結果可視化

6.1 繪制混淆矩陣

小李的理解

知識點

注意事項

完整代碼

結論


專欄:機器學習筆記

pycharm專業版免費激活教程見資源,私信我給你發

python相關庫的安裝:pandas,numpy,matplotlib,statsmodels

總篇:學習路線

第一卷:線性回歸模型

邏輯回歸(Logistic Regression)是一種適用于二分類問題的機器學習方法。本文將圍繞一個具體的乳腺癌檢測案例,詳細講解如何在PyCharm中使用邏輯回歸模型進行預測。我們將從數據準備、數據預處理、模型訓練、模型評估和結果可視化幾個方面進行詳細說明,并通過完整的代碼示例展示每個步驟。

案例背景

在本案例中,我們將使用經典的乳腺癌數據集(Breast Cancer Dataset)進行乳腺癌檢測預測。該數據集包含569個樣本,每個樣本有30個特征,并標記為良性(0)或惡性(1)。我們的目標是使用這些特征訓練一個邏輯回歸模型,預測新的樣本是良性還是惡性。

具體問題

我們需要解決以下幾個具體問題:

  1. 如何加載并理解乳腺癌數據集。
  2. 如何對數據進行預處理以適合邏輯回歸模型的訓練。
  3. 如何訓練邏輯回歸模型并進行預測。
  4. 如何評估模型的性能。
  5. 如何對結果進行可視化以便于解釋。

1. 環境準備

首先,確保你的開發環境中已經安裝了必要的Python庫:

pip install numpy pandas scikit-learn matplotlib seaborn
小李的理解

安裝庫是機器學習的基礎步驟。我們需要安裝一些流行的Python庫,如numpypandasscikit-learnmatplotlibseaborn,這些庫分別用于數值計算、數據處理、機器學習模型、繪圖和數據可視化。

知識點
  1. 庫的安裝:使用pip install命令安裝所需的Python庫。
  2. 常用庫:了解并熟悉常用的機器學習和數據處理庫。

2. 數據準備

2.1 導入必要的庫和數據集

我們使用scikit-learn庫中的乳腺癌數據集。

import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer# 加載數據集
data = load_breast_cancer()
X = data.data
y = data.target
小李的理解

scikit-learn提供了很多常用的數據集,load_breast_cancer()是用來加載乳腺癌數據集的方法。X是特征數據,y是目標標簽(0表示良性,1表示惡性)。

知識點
  1. 數據集加載:使用scikit-learn中的方法加載內置數據集。
  2. 特征與標簽:特征數據用于模型訓練,目標標簽用于分類。

2.2 數據集基本信息

將數據轉換為Pandas DataFrame格式以便查看和處理,并打印數據集的前幾行進行初步了解。

# 將數據轉換為DataFrame格式
df = pd.DataFrame(X, columns=data.feature_names)
df['target'] = y# 查看數據集的基本信息
print("數據集前五行:\n", df.head())
print("\n數據集描述統計信息:\n", df.describe())
print("\n數據集信息:")
df.info()

運行結果?

小李的理解

我們使用pandas庫將數據轉換為DataFrame格式,這樣可以方便地查看和處理數據。使用head()查看數據的前幾行,使用describe()查看數據的描述統計信息,使用info()查看數據的基本信息,包括每列的數據類型和非空值數量。

知識點
  1. DataFramepandas的核心數據結構,類似于電子表格,可以方便地操作和分析數據。
  2. 數據描述:通過head()describe()info()方法快速了解數據的基本情況。
注意事項
  1. 數據完整性:在加載數據時,確保數據沒有缺失值。本數據集沒有缺失值。
  2. 數據類型:特征值都是浮點型,而目標值是整數型。邏輯回歸適用于這些數據類型。

3. 數據預處理

3.1 劃分訓練集和測試集

將數據集劃分為訓練集和測試集,以便后續模型的訓練和評估。

from sklearn.model_selection import train_test_split# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 打印訓練集和測試集的大小
print(f'訓練集樣本數: {X_train.shape[0]}')
print(f'測試集樣本數: {X_test.shape[0]}')

?運行結果

小李的理解

我們將數據集分為訓練集和測試集,訓練集用于訓練模型,測試集用于評估模型的性能。train_test_split函數將數據按70%訓練集和30%測試集的比例進行劃分,并使用random_state=42保證每次運行結果一致。

知識點
  1. 數據劃分:使用train_test_split函數將數據集分為訓練集和測試集。
  2. 隨機種子random_state參數保證結果的可重復性。
注意事項
  1. 隨機種子random_state=42保證每次運行結果一致,方便調試和復現。
  2. 測試集比例:通常使用70%的數據進行訓練,30%的數據進行測試,但具體比例可以根據實際情況調整。

3.2 數據標準化

由于不同特征的取值范圍不同,需要對數據進行標準化處理,使每個特征的取值范圍相同。

from sklearn.preprocessing import StandardScaler# 數據標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 打印標準化后的部分數據
print(f'標準化后的訓練數據前五行:\n {X_train[:5]}')

?運行結果

小李的理解

標準化是將每個特征縮放到均值為0、標準差為1的范圍內,這樣可以消除不同特征之間的量綱差異,使模型訓練更加穩定。我們使用StandardScaler進行標準化,只對訓練數據擬合,然后對訓練和測試數據進行轉換。

知識點
  1. 標準化:使用StandardScaler將數據標準化,以消除特征之間的量綱差異。
  2. 數據泄漏:在標準化時,只對訓練數據進行擬合,然后對訓練和測試數據進行轉換。
注意事項
  1. 標準化方法:我們使用StandardScaler將每個特征縮放到均值為0、標準差為1的范圍內。
  2. 數據泄漏:在標準化時,我們僅對訓練數據擬合(fit),然后對訓練和測試數據進行轉換(transform),以避免數據泄漏。

4. 模型訓練

4.1 初始化和訓練邏輯回歸模型

使用scikit-learn庫中的邏輯回歸模型對訓練數據進行擬合。

from sklearn.linear_model import LogisticRegression# 初始化邏輯回歸模型
model = LogisticRegression(max_iter=10000)# 訓練模型
model.fit(X_train, y_train)# 打印模型的訓練結果
print("邏輯回歸模型訓練完成")
運行結果
小李的理解

我們使用LogisticRegression類來初始化邏輯回歸模型,并設置最大迭代次數為10000,以確保模型能夠收斂。然后,我們使用訓練數據擬合模型。

知識點
  1. 邏輯回歸模型LogisticRegression類用于初始化邏輯回歸模型。
  2. 最大迭代次數max_iter參數用于設置模型的最大迭代次數,以確保模型能夠收斂。
注意事項
  1. 最大迭代次數max_iter=10000確保模型能夠收斂,即使數據集較大或特征較多。
  2. 默認參數:初學者可以先使用默認參數,之后可以嘗試調整參數以優化模型性能。

5. 模型評估

5.1 預測結果

使用訓練好的模型對測試集進行預測。

# 預測
y_pred = model.predict(X_test)# 打印預測結果的前十個
print(f'預測結果前十個: {y_pred[:10]}')

?運行結果

小李的理解

我們使用predict方法對測試數據進行預測,得到每個樣本的預測標簽。然后,我們打印預測結果的前十個樣本。

知識點
  1. 模型預測:使用predict方法對測試數據進行預測。
  2. 預測標簽predict方法返回每個樣本的預測標簽。
注意事項
  1. 預測輸出predict方法輸出每個樣本的預測標簽。
  2. 預測概率:可以使用predict_proba方法獲取每個樣本屬于每個類別的概率。

5.2 計算準確率

計算模型在測試集上的準確率。

from sklearn.metrics import accuracy_score# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

?運行結果

小李的理解

準確率是模型正確預測的樣本數占總樣本數的比例,是評估模型性能的一個重要指標。

知識點
  1. 準確率:使用accuracy_score函數計算模型的準確率。
  2. 模型評估:準確率是評估模型性能的一個重要指標。
注意事項
  1. 準確率定義:準確率是正確預測的樣本數占總樣本數的比例。
  2. 適用場景:對于類別不平衡的問題,僅使用準確率可能會導致誤導,應結合其他指標。

5.3 混淆矩陣

生成并打印混淆矩陣,混淆矩陣可以直觀地顯示模型的分類性能。

from sklearn.metrics import confusion_matrix# 混淆矩陣
conf_matrix = confusion_matrix(y_test, y_pred)
print('Confusion Matrix:')
print(conf_matrix)

?運行結果

小李的理解

混淆矩陣是一個矩陣,用來評價分類模型的性能。矩陣的每一行表示實際類別,每一列表示預測類別。

知識點
  1. 混淆矩陣:使用confusion_matrix函數生成混淆矩陣。
  2. 矩陣解讀:混淆矩陣的每一行表示實際類別,每一列表示預測類別。
注意事項
  1. 混淆矩陣解讀
    • 左上(TP):正確預測為正類的數量
    • 右上(FP):錯誤預測為正類的數量
    • 左下(FN):錯誤預測為負類的數量
    • 右下(TN):正確預測為負類的數量
  2. 評估模型:通過混淆矩陣可以計算精確度、召回率等指標。

5.4 分類報告

生成并打印分類報告,報告包括精確度、召回率和F1分數等指標。

from sklearn.metrics import classification_report# 分類報告
class_report = classification_report(y_test, y_pred)
print('Classification Report:')
print(class_report)

?運行結果

小李的理解

分類報告提供了每個類別的精確度、召回率和F1分數,以及整體的宏平均(macro avg)和加權平均(weighted avg)指標。這些指標可以幫助我們更全面地評估模型的性能。

知識點
  1. 分類報告:使用classification_report函數生成分類報告。
  2. 評估指標:分類報告包括精確度、召回率和F1分數等指標。
注意事項
  1. 精確度(Precision):預測為正類的樣本中實際為正類的比例。
  2. 召回率(Recall):實際為正類的樣本中被正確預測為正類的比例。
  3. F1分數(F1-score):精確度和召回率的調和平均數,綜合考慮模型的準確性和召回能力。

6. 結果可視化

6.1 繪制混淆矩陣

使用Seaborn庫對混淆矩陣進行可視化。

import matplotlib.pyplot as plt
import seaborn as sns# 繪制混淆矩陣
plt.figure(figsize=(10, 7))
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
plt.title('Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()

?可視化結果

小李的理解

通過繪制混淆矩陣,我們可以直觀地看到模型的分類效果。seaborn庫提供了簡潔的繪圖方法,使得可視化更加美觀和易于理解。

知識點
  1. 數據可視化:使用seaborn庫進行數據可視化。
  2. 混淆矩陣圖:通過繪制混淆矩陣圖,可以直觀地展示模型的分類效果。
注意事項
  1. 圖像解釋:混淆矩陣圖表提供了直觀的分類性能展示。
  2. 顏色選擇:可以根據需要調整顏色映射,以便于區分不同類別。

完整代碼

import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
import matplotlib.pyplot as plt
import seaborn as sns# 1. 加載數據集
data = load_breast_cancer()
X = data.data
y = data.target# 2. 數據準備
df = pd.DataFrame(X, columns=data.feature_names)
df['target'] = y# 查看數據集的基本信息
print("數據集前五行:\n", df.head())
print("\n數據集描述統計信息:\n", df.describe())
print("\n數據集信息:")
df.info()# 3. 數據預處理
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 打印訓練集和測試集的大小
print(f'訓練集樣本數: {X_train.shape[0]}')
print(f'測試集樣本數: {X_test.shape[0]}')# 數據標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 打印標準化后的部分數據
print(f'標準化后的訓練數據前五行:\n {X_train[:5]}')# 4. 模型訓練
# 初始化邏輯回歸模型
model = LogisticRegression(max_iter=10000)# 訓練模型
model.fit(X_train, y_train)# 打印模型的訓練結果
print("邏輯回歸模型訓練完成")# 5. 模型評估
# 預測
y_pred = model.predict(X_test)# 打印預測結果的前十個
print(f'預測結果前十個: {y_pred[:10]}')# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')# 混淆矩陣
conf_matrix = confusion_matrix(y_test, y_pred)
print('Confusion Matrix:')
print(conf_matrix)# 分類報告
class_report = classification_report(y_test, y_pred)
print('Classification Report:')
print(class_report)# 6. 結果可視化
# 繪制混淆矩陣
plt.figure(figsize=(10, 7))
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
plt.title('Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()

?

結論

通過本文的講解,在PyCharm中使用邏輯回歸模型進行乳腺癌檢測的預測。從數據準備、數據預處理、模型訓練到結果評估與可視化,提供了詳細的步驟和代碼示例。通過這些步驟,你可以掌握如何應用邏輯回歸模型進行疾病預測,并根據模型的評估結果優化和改進模型。?

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

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

相關文章

controller不同的后端路徑對應vue前端傳遞數據發送請求的方式,vue請求參數 param 與data 如何對應后端參數

目錄 案例一: 為什么使用post發送請求,參數依舊會被拼接帶url上呢?這應該就是param 與data傳參的區別。即param傳參數參數會被拼接到url后,data會以請求體傳遞 補充:后端controller 參數上如果沒寫任何注解&#xff0c…

第二高的薪水

第二高的薪水: 描述 查詢并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查詢應該返回 null(Pandas 則返回 None) pandas import pandas as pddef second_highest_salary(employee: pd.DataFrame):# 1. 刪除所有重復的薪水.employee emp…

第一后裔進不去游戲怎么辦 第一后裔免費加速器推薦

Steam年度最熱心愿榜單第五的游戲終于上線了,包好玩的新游,第一后裔,為什么說他肯定好玩呢?因為游戲第一次測試在兩年前就開始了,中間也斷斷續續測試了好多次,很多小伙伴都是體驗過游戲的,經過多…

MySQL 9.0正式版本來了!

MySQL 9.0 第一個正式版本于 2024 年 7 月 1 日發布,這是一個創新版,意味著它會增加一些新功能、修復一些問題并棄用一些舊功能。 性能相關 MySQL 9.0 支持將 EXPLAIN ANALYZE 命令輸出的 JSON 數據存儲到用戶定義的變量中,語法如下&#x…

【硬件模塊】PN532 NFC讀卡串口通信

PN532 PN532是一款功能豐富的非接觸式通訊收發模塊,其基于8051單片機核心,集成了多種通信接口和工作模式,以滿足不同應用場景的需求。以下是PN532功能相關的詳細介紹: 多種通信接口:PN532支持I2C、SPI和UART&#xff0…

MySQL的安裝和環境配置

1.下載MySQL安裝MySQL 選Custom選項為高級自定義模式 2.配置MySQL環境 安裝好之后,在桌面右鍵點擊我的電腦(有些是此電腦),然后點擊屬性,進入系統信息設置,接著點擊高級,進入環境變量界面,進入環境變量界面…

【Spring Boot】Java 持久層 API:JPA

Java 持久層 API:JPA 1.Spring Data1.1 主要模塊1.2 社區模塊 2.JPA3.使用 JPA3.1 添加 JPA 和 MySQL 數據庫的依賴3.2 配置數據庫連接信息 4.了解 JPA 注解和屬性4.1 常用注解4.2 映射關系的注解4.3 映射關系的屬性 5.用 JPA 構建實體數據表 1.Spring Data Spring…

Redis基礎教程(十):HyperLogLog

💝💝💝首先,歡迎各位來到我的博客,很高興能夠在這里和您見面!希望您在這里不僅可以有所收獲,同時也能感受到一份輕松歡樂的氛圍,祝你生活愉快! 💝&#x1f49…

Linux愛好者能對Linux癡迷到什么程度?

在開始前剛好我有一些資料,是我根據網友給的問題精心整理了一份「Linux的資料從專業入門到高級教程」, 點個關注在評論區回復“888”之后私信回復“888”,全部無償共享給大家!!!曾經想幫助全世界的人卸載掉…

歸并排序——有序序列的合并

目錄 1、簡述 2、復雜度 3、穩定性 4、例子 1、簡述 有序序列的合并(Merge of Sorted Sequences)是歸并排序的核心步驟之一。其目的是將兩個已經排序的序列合并成一個新的有序序列。這個過程在歸并排序中非常重要,因為歸并排序通過遞歸地…

技術職務管理助力智慧校園建設:深入解讀人事系統

智慧校園人事系統中的技術職務管理模塊,專注于高校及教育機構內技術人員及科研人員的職務管理,涵蓋職稱評審、技術職務任命、項目參與記錄、科研成果跟蹤及技術能力評估等多個方面,旨在通過信息化手段提升技術人才管理的效率與科學性。 在這一…

Windows如何安裝并啟動Nginx

0、前言 Nginx 是一款高性能、輕量級的Web服務器和反向代理服務器,廣泛應用于互聯網領域。它以其高效穩定、內存占用少和豐富的模塊化設計而受到開發者們的青睞。 在實際使用過程中,我們多數時候會在Linux系統上運行Nginx,但實際上&#xff…

單目行車測距攝像系統(單目測距-行車)

單目行車測距攝像系統是一種利用單個攝像頭實現車輛行駛中前方障礙物距離測量的技術。該系統通過計算機視覺算法,能夠實時分析攝像頭捕捉的圖像,精確計算出車輛與前方物體之間的距離,對于自動駕駛、高級駕駛輔助系統(ADAS&#xf…

PMP考試沒通過別擔心,補救辦法來了

2024年6月PMP考試成績正在陸續分批次發布。沒有考試通過的同學就會疑問,考試沒考過怎么辦?可不可以補考?面對PMP考試沒通過的情況,我們應該如何應對呢? 首先要告訴大家一個好消息!6月考試不通過的考生可以…

24年hvv不要掉進秘網了,特別別被反制了

這兩年的hvv,防守方已經不單單是每天坐那看監控、封ip了,越來越多的大佬投身防守工作中,讓防守從被動變成了一個主動的活了。 目前最常見的主動防守有2種,1、長時間的蜜罐運營。2、蜜罐反制。 01-蜜罐運營 蜜罐這個詞干安全的都…

七、函數練習

目錄 1. 寫一個函數可以判斷一個數是不是素數。(素數只能被1或其本身整除的數) 2. 一個函數判斷一年是不是閏年。 3.寫一個函數,實現一個整形有序數組的二分查找。 4. 寫一個函數,每調用一次這個函數,使得num每次增…

基于PHP花澗訂購系統的設計與實現00332

摘 要 近年來,電子商務的快速發展引起了行業和學術界的高度關注。花澗訂購系統旨在為用戶提供一個簡單、高效、便捷的花卉購物體驗,它不僅要求用戶清晰地查看所需信息,而且還要求界面設計精美,使得功能與頁面完美融合,…

PIL,OpenCV,Pytorch處理圖像時的通道順序(顏色,長寬深)

項目顏色通道順序長寬通道順序數據類型取值范圍PILRGBHWCndarray0-255 (byte)OpenCVBGRHWCndarray0-255 (byte)PyTorchRGB/BGR (取決于如何讀取)(N)CHWtensor0-1 (float, 標準化后); 0-255 (int, 未標準化) 注意以下幾點: 顏色通道順序:PIL默認使用RGB順…

圖像增強方法匯總OpenCV+python實現【第二部分:高級圖像增強方法】

圖像增強方法匯總OpenCV+python實現【第二部分:高級圖像增強方法】 前言高級圖像增強方法1. 隨機高斯模糊(Random Gaussian Blur)2. 隨機灰度(Random Grayscale)3. 隨機通道交換(Random Channel Swap)4. 隨機伽馬校正(Random Gamma Correction)5. 隨機透視變換(Rando…

監控易在某市電子政務外網的運維應用案例

隨著信息技術的飛速發展,電子政務已經成為政府提升服務效率、增強公眾滿意度的重要途徑。某市電子政務外網作為該市政府部門與外界交互的主要平臺,承載著大量關鍵業務與數據交互,其網絡環境的復雜性、應用特點的多樣性以及運維需求的挑戰性&a…