【机器学习】在【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中使用逻辑回归模型进行乳腺癌检测的预测。从数据准备、数据预处理、模型训练到结果评估与可视化,提供了详细的步骤和代码示例。通过这些步骤,你可以掌握如何应用逻辑回归模型进行疾病预测,并根据模型的评估结果优化和改进模型。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/767420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

北京app开发与小程序开发相比较下的优势

随着互联网科技与移动技术的不断成熟,app与小程序的使用也越来越频繁。作为现如今人们日常生活中不可或缺的辅助工具,各企业也开始探索、开发自己的小程序或app。那么,这两者的区别是什么呢?两者相比,北京app开发又具有…

Android平台崩溃和 ANR 问题进行符号化解析、解析崩溃日志的内存地址

使用Android Logcat Stacktrace Utility | Android Logcat | 1.2.3 1.设置so库路径 2.打开Stacktrace Utility工具 3.在Original粘贴报错内存地址 4.点击Resolve Stacktraces,就会解析出内存地址 如果是红色,解析失败了,缺少原生so库,可以在第一步添加so库文件再次尝试…

未公开 GeoServer开源服务器wfs远程命令执行漏洞 已复现(CVE-2024-36401)

0x01 阅读须知 技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成…

【进阶篇】Java 项目中对使用递归的理解分享

前言 笔者在最近的项目开发中,遇到了两个父子关系紧密相关的场景:评论树结构、部门树结构。具体的需求如:找出某条评论下的所有子评论id集合,找出某个部门下所有的子部门id集合。 在之前的项目开发经验中,递归使用得是…

win10下Python的安装和卸载

前言 之前电脑上安装了python3.9版本,因为工作需要使用3.6版本的Python,需要将3.9版本卸载,重新安装3.6版本。下面就是具体的操作步骤: 1. 卸载 在我的电脑中搜索到3.9版本的安装文件,如下图: 双击该应用程序&#xf…

数据结构历年考研真题对应知识点(树的基本概念)

目录 5.1树的基本概念 5.1.2基本术语 【森林中树的数量、边数和结点数的关系(2016)】 5.1.3树的性质 【树中结点数和度数的关系的应用(2010、2016)】 【指定结点数的三叉树的最小高度分析(2022)】 5.1…

win10显示毫秒-上午-下午及星期几,24小时制

关于毫秒 winr regedit 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced 新建ShowSecondsInSystemClock,编辑1显示,不显示就删了它 然后重启 资源管理器可能有多个全部重启,就可以啦 根据自己喜好…

【MySQL】表的操作{创建/查看/修改/删除}

文章目录 1.创建表1.1comment:注释信息1.2存储引擎 2.查看表3.修改表3.1add添加列,对原数据无影响3.2drop删除列3.3modify修改列类型3.4change修改列名3.5rename [to]修改表名 4.删除表5.总结 1.创建表 CREATE TABLE table_name (field1 datatype,field…

昇思MindSpore学习笔记3-02热门LLM及其他AI应用--K近邻算法实现红酒聚类

摘要: 介绍了K近邻算法,记录了MindSporeAI框架使用部分wine数据集进行KNN实验的步聚和方法。包括环境准备、下载红酒数据集、加载数据和预处理、搭建模型、进行预测等。 一、KNN概念 1. K近邻算法K-Nearest-Neighbor(KNN) 用于分类和回归的非参数统计…

2024年下半年系统集成项目管理工程师使用新版教材,该如何备考?

2024年下半年,新版的《系统集成项目管理工程师教程》(第3版)将被系统集成项目管理工程师使用。许多考生可能会感到迷茫,不知道该如何复习。毕竟教材更新后,以往的资料和真题都变得无用,重点内容和考试方向也…

llm学习-3(向量数据库的使用)

1:数据读取和加载 接着上面的常规操作 加载环境变量---》获取所有路径---》加载文档---》切分文档 代码如下: import os from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv()) # 获取folder_path下所有文件路径,储存在…

OV SSL证书年度成本概览:为企业安全护航的经济之选

在当今数字化时代,企业网站不仅是品牌展示的窗口,更是与客户沟通的桥梁。然而,随着网络威胁的不断升级,保护网站安全成为了企业不可忽视的任务。SSL证书,特别是OV SSL证书,因其对企业身份的严格验证&#x…

Halcon OCR字符识别(极坐标转换,字符识别)

Halcon OCR字符识别(极坐标转换,字符识别) 代码 * 1.加载图片 *************************************************** dev_close_window () read_image (Image, ./img) get_image_size (Image, Width, Height) dev_get_window (WindowHandle…

聚鼎贸易:装饰画开店教程新手入门

当艺术遇上商业,每一幕交易皆是文化的交流。本篇将引领有志于开设装饰画店铺的新手们,迈入创业的门槛,以独特的视角和步骤,探索如何成功经营一家装饰画店。 精选货源乃基石。货源的选取不仅反映店主的品味,更直接影响到…

NPDP|产品经理的沟通协调能力:塑造产品成功的核心力量

在快速发展的商业环境中,产品经理的角色愈发重要。他们不仅要负责产品的战略规划、需求管理、项目管理,更要与团队内外各方进行有效的沟通协调。那么,产品经理的沟通协调能力到底有多重要呢?本文将深入探讨这一话题。 沟通是产品成…

使用css做一个旋转的八卦图

使用css做一个旋转的八卦图 1, html部分 <div class"tai"><div class"bai"></div><div class"hei"></div> </div>2, css部分 .tai{width: 200px;height: 200px;border: 1px solid #000;background: linea…

【Python机器学习】模型评估与改进——回归指标

对于回归问题&#xff0c;可以像分类问题一样进行详细评估&#xff0c;例如&#xff0c;对目标值估计过高与目标值估计过低进行对比分析。 但是&#xff0c;对于我们见过的大多数应用来说&#xff0c;使用默认就足够了&#xff0c;它由所有回归器的score方法给出。业务决策有时…

全面详解菲律宾slots游戏本土网盟广告CPI流量效果分析

全面详解菲律宾slots游戏本土网盟广告CPI流量效果分析 一、引言 随着互联网的普及和移动设备的广泛应用&#xff0c;网络游戏行业迅速崛起&#xff0c;成为全球娱乐市场的一大热门。菲律宾作为东南亚地区的重要国家&#xff0c;其网络游戏市场也呈现出蓬勃的发展势头。在这样的…

AI数字人直播源码出售价格公布!

随着数字人行业的兴起&#xff0c;以数字人直播为代表的应用场景逐渐成为人们日常生活中不可分割的一部分&#xff0c;再加上艾媒研究数据显示&#xff0c;超五成以上的被调查群体的企业使用过虚拟人技术&#xff0c;超三成被调查群体的企业计划使用虚拟人技术等结论的公布&…

网友炸锅:这款iPhone壳竟能直接放保时捷车钥匙?

在当今这个个性化消费时代&#xff0c;高端智能手机及其配件已经成为了展示个人身份和品味的重要途径。最近&#xff0c;一款专为保时捷车主量身定制的iPhone手机壳&#xff0c;在互联网上引发了广泛的关注和讨论。 这款手机壳不仅在设计上凸显了保时捷的品牌logo&#xff0c;…