基于逻辑回归构建肿瘤预测模型

news/2024/4/30 6:01:23/文章来源:https://blog.csdn.net/qq_40186237/article/details/130100056

使用逻辑回归构建肿瘤预测模型

描述

乳腺癌数据集包括569个样本,每个样本有30个特征值(病灶特征数据),每个样本都属于恶性(0)或良性(1)两个类别之一,要求使用逻辑回归(LR)算法建立预测模型,实现准确预测新的病灶数据的类型(恶性或良性)。

样本特征数据为病灶影像的测量数据,部分特征如下:

请添加图片描述

本任务的主要实践内容:

1、 逻辑回归-肿瘤预测模型的构建、预测及评估

2、 逻辑回归-鸢尾花(Iris)分类模型的实现

源码下载

环境

  • 操作系统:Windows 10、Ubuntu18.04

  • 工具软件:Anaconda3 2019、Python3.7

  • 硬件环境:无特殊要求

  • 依赖库列表

    matplotlib	3.3.4
    numpy 			1.19.5
    pandas			1.1.5
    scikit-learn	0.24.2
    mglearn        0.1.9
    

分析

逻辑回归(LogisticRegression)虽然名字中带有“回归”,却是一个经典的分类算法, 本任务通过完成乳腺癌肿瘤预测(通过病灶特征数据预测肿瘤为恶性还是良性,属于监督学习中二分类问题),熟练掌握逻辑回归的原理及编程应用。

本任务涉及以下几个环节:

a)加载、查看乳腺癌数据集

b)数据集拆分

d)构建模型、评估并优化模型、

e)在测试集上预测结果,并输出预测概率

f)利用逻辑回归实现鸢尾花分类(多分类)

实施

1、加载、查看乳腺癌数据集

from sklearn.datasets import load_breast_cancercancer = load_breast_cancer() # 加载cancer数据集
print(cancer.keys()) # 查看数据有哪些keys(与鸢尾花数据集相同)

输出结果:

dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
print('Shape of data:', cancer.data.shape) # 数据集尺寸

输出结果:

Shape of data: (569, 30)
print(cancer.target_names) # 标签名称(malingant-恶性,begin-良性)
print(cancer.target) # 标签数据(569个0或1, 0-恶性,1-良性)

输出结果:

['malignant' 'benign']
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 01 0 1 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 1 11 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 0 11 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 01 0 1 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 1 11 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 11 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 0 1 11 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 00 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 11 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 10 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 11 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 01 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 0 0 0 0 0 0 1]

2、拆分数据集

from sklearn.model_selection import train_test_split# 随机拆分数据集
# X_train 训练集
# X_test 测试集
# y_train 训练集标签(即训练集数据对应的类别)
# y_test 测试集标签(即测试集数据对应的类别)
# test_size 测试集比例
# random_state 随机状态(设置为固定值可以锁定拆分结果,用于数据复现)
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.25, random_state=0)
# 查看拆分情况
print(X_train.shape, X_test.shape)
print(y_train.shape, y_test.shape)

输出结果:

(426, 30) (143, 30)
(426,) (143,)

3、构建模型、评估

from sklearn.linear_model import LogisticRegression# 采用默认参数创建LR模型,并拟合训练数据
model = LogisticRegression().fit(X_train, y_train)# 评估模型在训练集和测试集上的成绩
score_train = model.score(X_train, y_train)
score_test = model.score(X_test, y_test)
print(score_train, score_test)

输出结果:

0.9553990610328639 0.958041958041958

4、在测试集上预测结果,并输出预测概率

这里我们预测测试集中的前三个样本,输出预测结果(0-恶性,1-良性),并输出0和1对应的概率值。

# 预测结果(0-恶性,1-良性)
y_pred = model.predict(X_test[:3]) # 预测测试集前三个样本
print(y_pred)# 输出预测的概率值(0和1的概率值)
y_pred_proba = model.predict_proba(X_test[:3]) # 预测测试集前三个样本
print(y_pred_proba)

输出结果:

[0 1 1]
[[0.99284545 0.00715455][0.0332907  0.9667093 ][0.00271258 0.99728742]] # 该样本属于0的概率为0.002,属于1的概率为0.997,所以判断为类别1

强调:逻辑回归算法计算样本属于每个类别的概率值(即可能性),取概率值最大的类别作为预测结果。

5、扩展练习——基于逻辑回归实现鸢尾花分类(多分类问题)

from sklearn.datasets import load_iris # 加载Iris数据集
iris = load_iris()# 数据集拆分
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25, random_state=0)
# 创建LR模型
# model = LogisticRegression().fit(X_train, y_train) # 0.9821428571428571 0.9736842105263158
# 优化模型参数,提升模型性能(C正则化系数,penalty正则化类型l1 or l2)
model = LogisticRegression(C=10, penalty='l2').fit(X_train, y_train)   # 0.9910714285714286 0.9736842105263158# 评估模型成绩
score_train = model.score(X_train, y_train)
score_test = model.score(X_test, y_test)
print(score_train, score_test)# 预测鸢尾花种类并与实际种类做对比(前十个样本)
y_pred = model.predict(X_test)
print('预测类别:' ,y_pred[:10])
print('实际类别:' ,y_test[:10])

输出结果:

0.9821428571428571 0.9736842105263158
预测类别: [2 1 0 2 0 2 0 1 1 1]
实际类别: [2 1 0 2 0 2 0 1 1 1]

优化参数,提升模型性能:

model = LogisticRegression(C=10, penalty='l2').fit(X_train, y_train) # 0.9910714285714286 0.9736842105263158

优化后结果为:

0.9910714285714286 0.9736842105263158
预测类别: [2 1 0 2 0 2 0 1 1 1]
实际类别: [2 1 0 2 0 2 0 1 1 1]

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

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

相关文章

九龙证券|服务器龙头获资金连续抢筹,尾盘主力抢筹前期大热门股

今天,核算机职业取得主力大手笔抢筹。 今天主力资金净流出53.89亿元,其间创业板净流出3.19亿元,沪深300成份股净流出7.61亿元。 申万一级职业中,今天有19个职业上涨,传媒职业接连两日均涨近5%,居首位&…

解密HTTP协议:探索其组成部分与工作原理

前言 欢迎来到今天的每日一题,每日一提。昨天有聊到,HTTP 和 HTTPS 之间有什么区别?面试官基本秉承着刨根问题的原则,肯定是不会轻易放过我们的,那么自然是要继续拷问了。所以我们今天就聊聊什么是 HTTP,它…

ERTEC200P-2 PROFINET设备完全开发手册(5-2)

5.2 TIA 数据记录操作 在PLC的程序中,可以通过指令RDREC和WRREC读写数据记录,在参考代码里可以看到读写操作都实现了index 2的记录数据,并且初始化为: #define DEMO_RECORD "ABCDEFGH" 首先定义要写入和读出的数据…

让技术造福残障人士,让开发助力无障碍

前言 随着互联网技术的快速发展,越来越多的领先技术运用到公益领域中来。运用科技来造福残障人士,比如前几年比较智能化的自动行走轮椅,盲人阅读器,以及聋哑人助听器等,都是通过科技来帮助残障人士方便生活的例子。作为…

pandas之DataFrame基础

pandas之DataFrame基础1. DataFrame定义2. DataFrame的创建形式3. DataFrame的属性4. DataFrame的运算5. pandas访问相关操作5.1 使用 loc[]显示访问5.2 iloc[] 隐式访问5.3 总结6. 单层索引和多层级索引6.1 索引种类与使用6.2 索引相关设置6.3 索引构造6.4 索引访问6.5 索引变…

【排序算法 上】带你手撕常见排序 (插入,希尔,选择,堆排序) (动图详解)

欢迎来到 Claffic 的博客 💞💞💞 “东风随春归,发我枝上花。” 前言: 排序是日常生活中极其常见的一种算法,它的功能很简单,就是将数字按照升序/降序排列,最终形成一组有序的数字&a…

NumPy 秘籍中文第二版:五、音频和图像处理

原文:NumPy Cookbook - Second Edition 协议:CC BY-NC-SA 4.0 译者:飞龙 在本章中,我们将介绍 NumPy 和 SciPy 的基本图像和音频(WAV 文件)处理。 在以下秘籍中,我们将使用 NumPy 对声音和图像进…

Redis锁的租约问题

目录Redis的租约问题Redis租约问题的想法Redis租约问题的解决方案Redis的租约问题 首先我们先来说一说什么是Redis的租约问题。   在我们实现Redis分布式锁的时候&#xff0c;我们会出现Redis锁的时间<业务执行执行时间&#xff0c;这其实就是一个典型的租约问题&#xf…

ChatGPT背后的AI背景、技术门道和商业应用(万字长文,建议收藏)

作者&#xff1a;京东科技 李俊兵 各位看官好&#xff0c;我是球神&#xff08;江湖代号&#xff09;。 自去年11月30日ChatGPT问世以来&#xff0c;迅速爆火出圈。 起初我依然以为这是和当年Transformer, Bert一样的“热点”模型&#xff0c;但是当一篇篇文章/报告不断推送…

LAMP架构的配置

一.LAMP概述 1、LAMP的概念 LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态web站点服务及其应用开发环境 LAMP是一个缩写词&#xff0c;具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、…

【Unity入门】11.脚本控制物体旋转

【Unity入门】脚本控制物体旋转 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;控制物体自转 &#xff08;1&#xff09;创建RotateLogic脚本 上一篇文章我们学习了如何在脚本中获取物体对象…

Oracle VM VirtualBox安装开放麒麟桌面版本操作

1.环境 Oracle VM VirtualBox版本6.1.18 开放麒麟桌面版本openkylin 0.0.5 https://mirror.lzu.edu.cn/openkylin-cdimage/yangtze/openkylin-0.9.5-x86_64.iso 1.创建新虚拟电脑 ql 并将ios导入 然后点击启动 注意&#xff1a; vm box如果鼠标设置不当的话 基本上不可能完成…

word脚标【格式:第X页(共X页)】

不得不吐槽一下这个论文&#xff0c;真的我好头疼啊。我又菜又不想改。但是还是得爬起来改 &#xff08;是谁大半夜不能睡觉加班加点改格式啊&#xff09; 如何插入页码。 格式、要求如下: 操作步骤&#xff1a; ①双击页脚&#xff0c;填好格式&#xff0c;宋体小四和居中都…

联想集团ESG与社会价值论坛召开,首次发布《联想集团2022社会价值报告》

对企业而言&#xff0c;ESG不再是选择题&#xff0c;而是必答题。 联想集团是ESG的先行者、领军者。 2023年4月11日&#xff0c;“联想集团ESG与社会价值论坛暨《联想集团2022社会价值报告》发布会”在京召开&#xff0c;会议由中国社会责任百人论坛、联想集团联合主办&#xf…

LeetCode:1. 两数之和——哈希表~

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340;算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;1. 两数之和 题目描述&#xff1a;给定一个整数数组nums 和一个整数目标…

电脑组装教程分享!

案例&#xff1a;如何自己组装电脑&#xff1f; 【看到身边的小伙伴组装一台自己的电脑&#xff0c;我也想试试。但是我对电脑并不是很熟悉&#xff0c;不太了解具体的电脑组装步骤&#xff0c;求一份详细的教程&#xff01;】 电脑已经成为我们日常生活中不可或缺的一部分&a…

Windows使用Dockers+battery historian踩坑记

1、首先&#xff0c;需要翻墙。 2、然后安装Dockers&#xff0c;网上好多博客说安装Docker Toolbox&#xff0c;我亲测无效&#xff0c;卸载后安装Docker for Windows&#xff0c;安装完成后打开&#xff0c;会提示&#xff1a; Hardware assisted virtualization and data e…

Anaconda + TensorFlow Winodws环境安装(Windows Terminal / Visual Studio)

目录前言个人环境Anaconda安装下载安装测试添加到windows terminalTensorFlow环境配置安装测试搭配Visual Studio 2022前言 以前发生的一些事情&#xff0c;让我认识到即便配环境这种事情&#xff0c;最好还是把自己的过程存个档 &#xff0c;这个的安装虽然简单&#xff0c;但…

pytorch通过不同的维度提高cifar10准确率

这里写自定义目录标题通过模型通过优化器通过batchsize通过数据增强总结当前网络的博客上都是普遍采用某个迁移学习训练cifar10&#xff0c;无论是vgg&#xff0c;resnet还是其他变种模型&#xff0c;最后通过实例代码&#xff0c;将cifar的acc达到95以上&#xff0c;本篇博客将…

资本/车企持续加码的新赛道,谁将成为本土赢家?

随着汽车行业逐渐复苏&#xff0c;汽车厂商开始规划未来5年能促进销量的新技术&#xff0c;而AR-HUD就是被看好的技术之一。 Envisics创始人兼CEO Jamieson Christmas博士表示&#xff1a;我们几乎在与所有人合作&#xff0c;除了捷豹路虎、松下汽车系统外还有其他合作伙伴。此…