【机器学习】在【Pycharm】中的实践教程:使用【逻辑回归模型】进行【乳腺癌检测】

news2025/2/27 5:25:53

目录

案例背景

具体问题

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.coloradmin.cn/o/1889132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程不安全情况之内存可见性——volatile

内存可见性 影响线程安全的原因有很多,内存可见性的也会引起线程不安全。 以下面的案例来看,线程启动后,t1不断进行循环,直到t2输入数字后改变状态,t1线程才会结束。 private static int count;public static void ma…

区间动态规划——最长回文子序列长度(C++)

把夜熬成粥,然后喝了它。 ——2024年7月1日 书接上回:区间动态规划——最长回文子串(C)-CSDN博客,大家有想到解决办法吗? 题目描述 给定一个字符串s(s仅由数字和英文大小写字母组成&#xff0…

JavaSEJava8 时间日期API + 使用心得

文章目录 1. LocalDate2. LocalTime3. LocalDateTime3.1创建 LocalDateTime3.2 LocalDateTime获取方法 4. LocalDateTime转换方法4.1 LocalDateTime增加或者减少时间的方法4.2 LocalDateTime修改方法 5. Period6. Duration7. 格式转换7.1 时间日期转换为字符串7.2 字符串转换为…

基于YOLOv5的人脸目标检测

本文是在之前的基于yolov5的人脸关键点检测项目上扩展来的。因为人脸目标检测的效果将直接影响到人脸关键点检测的效果,因此本文主要讲解利用yolov5训练人脸目标检测(关键点检测可以看我人脸关键点检测文章) 基于yolov5的人脸关键点检测:人脸关键点检测…

FL Studio 21.0.3.3517中文破解版2024最新Keygen免费下载安装激活教程

你们是否也是音乐制作爱好者呢?如果是,那就仔细阅读文章收集对自己有帮助的操作技巧吧~~ FL Studio 21.2.3 Win-安装包下载如下: https://wm.makeding.com/iclk/?zoneid55981 FL Studio 21 .2.3Mac-安装包下载如下: https://wm.makeding.com/iclk/?…

Unity 3D软件下载安装;Unity 3D游戏制作软件资源包获取!

Unity3D,它凭借强大的功能和灵活的特性,在游戏开发和互动内容创作领域发挥着举足轻重的作用。 作为一款顶尖的游戏引擎,Unity3D内置了先进的物理引擎——PhysX。这一物理引擎堪称业界翘楚,能够为开发者提供全方位、高精度的物理模…

东软医疗获通用技术集团战略投资,共创中国医疗设备产业未来

近日,通用技术集团所属资本公司联合中国国有企业混合所有制改革基金有限公司与东软医疗系统股份有限公司(下称“东软医疗”)签署投资协议,战略投资东软医疗。 作为央企和民企携手发展高端医疗设备产业的具体实践,此次…

有什么事在windows上显的顺理成章,在Linux上就很令人费解?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!可以假定一个几乎恒久不变的…

基于Java的音乐网站系统01239

目 录 摘要 1 绪论 1.1 研究背景 1.2系统开发目标、意义 1.3研究内容 2 相关技术介绍 2.1 MySQL数据库 2.2 Java编程语言 2.3 SpringBoot框架介绍 3 系统需求分析与设计 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 法律可行性分析 3.2 需…

已成功与服务器建立连接,但是在登录过程中发生错误。(provider: SSL提供程序,error:0-证书链是由不受信任的颁发机构颁发的。)

已成功与服务器建立连接,但是在登录过程中发生错误。(provider: SSL提供程序,error:0-证书链是由不受信任的颁发机构颁发的。) 在连接SQL Server2008R2数据库时发生错误。 连接字符串:server127.0.0.1;uidsa;pwd1;databasedb; 解决办法: 方…

Python--线程基础

相关概念 线程是"轻量级进程",是计算机中CPU进行任务调度的最小单位。 线程属于进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程。 每个进程开始的创建的时候,都会随之创建一个主线程。 进程负责分配和隔离资源(CPU, 内存…

2002-2022年各省老年人口抚养比(人口抽样调查)数据

2002-2022年各省老年人口抚养比(人口抽样调查)数据 1、时间:2002-2022年 2、指标:老年人口抚养比 3、来源:国家统计局、统计年鉴 4、范围:31省, 5、缺失情况:无缺失,其中2010年的值取2009、…

人脸嵌入向量提取计算

本文将讨论如何使用开源中提供的预训练模型从图像中提取人脸编码或人脸嵌入。我还附上了代码,请参阅此 git仓库。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出…

灌区量测水管理系统是如何实现灌区节水?

随着全球水资源日益紧张,节水已成为农业生产中不可忽视的一环。在灌区管理中,量测水管理系统以其精准的数据监测和科学的灌溉管理,为实现灌区节水提供了强有力的技术支持。 灌区量测水管理系统是一套集成了自动化监测、数据传输、数据分析和…

基于星火大模型的群聊对话分角色要素提取挑战赛|#AI夏令营#Datawhale#夏令营-Lora微调与prompt构造

赛题连接 https://challenge.xfyun.cn/topic/info?typerole-element-extraction&optionphb Datawhale Al夏令营 零基础入门大模型技术竞赛 数据集预处理 由于赛题官方限定使用了星火大模型,所以只能调用星火大模型的API或者使用零代码微调 首先训练数据很少…

fyne一个复杂的布局案例

一个复杂的布局案例 实现如下布局: 布局分析: 代码如下: package mainimport ("complexlayout/icons""fyne.io/fyne/v2""fyne.io/fyne/v2/app""fyne.io/fyne/v2/canvas""fyne.io/fyne/v2/container""fyne.io/fyne/v2…

昇思MindSpore学习入门-保存与加载

在训练网络模型的过程中,实际上我们希望保存中间和最后的结果,用于微调(fine-tune)和后续的模型推理与部署,本章节我们将介绍如何保存与加载模型。 保存和加载模型权重 保存模型使用save_checkpoint接口,…

在Linux上运行macOS:深度解析OSX-KVM项目

在Linux上运行macOS:深度解析OSX-KVM项目 在现代开发和测试环境中,能够在不同操作系统之间无缝切换是至关重要的。对于开发者而言,如何在Linux系统上运行macOS一直是一个挑战。然而,OSX-KVM项目为我们提供了一种高效的解决方案&a…

rtpengine 项目

目录 !1. 如果容器内部修改 rtpengine 并且让他生效 守护进程模块(daemon) 内核模块(kernel-module) 录音守护进程模块(recording-daemon) iptables扩展模块(iptables-extension) 2. 在Docker容器中编译好四个模块后,您需要采取以下步骤 1. 加载内…

网易云商发布《2024体验增长白皮书》,助力企业找到增长突破点

“过去几年里,当我们做内部审视和自我反思时,我们知道阿里落后了,因为我们忘记了真正的客户是谁。我们的客户是使用APP进行购物的人,而我们没有给他们最好的体验。” 4月3日,在挪威主权财富基金(Norges Ba…