逻辑回归-癌症病预测与不均衡样本评估

news2024/10/6 8:26:37

1.注册相关库(在命令行输入)

pip install scikit-learn
pip install pandas
pip install numpy

2.导入相关库

import pandas as pd
import numpy as np
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

3.读取数据文件,即癌症数据集

#库读取远程的 CSV 文件
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data')
data.head()
print(data.head())

#给列名字
names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape','Marginal Adhesion',
         'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin','Normal Nucleoli', 'Mitoses', 'Class']

#给data增加一个names参数
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',names = names)
data.Class#说明:2表示良性,4表示恶性
print(data['Class'])

names列名依次为:

Sample code number:样本编号

Clump Thickness:肿块厚度

Uniformity of Cell Size:细胞大小的均匀性

Uniformity of Cell Shape:细胞形状的均匀性

Marginal Adhesion:边缘粘附

Single Epithelial Cell Size:单个上皮细胞大小

Bare Nuclei:裸核

Bland Chromatin:平淡的染色质

Normal Nucleoli:正常的核仁

Mitoses:有丝分裂

Class:肿瘤类型(良性或恶性)

4.数据清洗(替换空值)

#替换缺失值
data = data.replace(to_replace='?',value=np.nan)
## 删除缺失值的样本
data = data.dropna() #删除有np.nan的行

5.进行训练

训练集(x_train,y_train):训练集是用于训练机器学习模型的数据集。通常,我们会利用训练集中的已知样本(包括特征值和目标值)来训练模型,并通过优化模型参数来使其适合数据。

测试集(x_test,y_test):测试集是用于评估机器学习模型性能的数据集。测试集通常由未出现在训练集中的样本组成,用于测试模型是否能够正确推断或预测样本的目标值。

#特征值
x = data.iloc[:,:-1]
x.head()

#目标值
y = data['Class']
y.head()

#表示将数据集中的 20% 作为测试集,剩下的 80% 作为训练集
#:x_train 是训练集的特征值,x_test 是测试集的特征值,y_train 是训练集的目标值,y_test 是测试集的目标值
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2)
transform = StandardScaler()#实例化转换器

#标准化
#标准化的目的是将不同尺度和单位的特征值转换为具有统一标准的值,以保证模型能够更好地学习和预测
# 通过标准化,可以使特征值的均值为0,标准差为1,从而使得特征值在相同的尺度范围内,避免不同特征值之间的偏差对模型造成影响,使得不同特征之间可以进行可比较的比较。。
x_train = transform.fit_transform(x_train)
x_test = transform.fit_transform(x_test)
mode= LogisticRegression()#用默认的就行
mode.fit(x_train,y_train)#得到了模型
y_predict = mode.predict(x_test)

6.模型评估:

#print("y_predict:\n", y_predict)
print("直接比对真实值和预测值:\n", y_test == y_predict)

# 计算准确率
accuracy = mode.score(x_test, y_test)
print("准确率为:\n", accuracy)


#输出混淆矩阵
cm = confusion_matrix(y_test, y_predict, labels=[2, 4])
print("混淆矩阵:\n",cm)

# 打印分类报告
res = classification_report(y_test, y_predict, labels=[2, 4], target_names=['良性', '恶性'])
print(res)

混淆矩阵:

当评估一个分类模型的性能时,准确率(precision)、召回率(recall)和F1值是常用的指标。这些指标可以帮助我们理解模型在不同类别上的预测质量。

 准确率(Precision)是指模型在所有被分类为正例的样本中,正确预测为正例的比例。准确率告诉我们被模型预测为正例的样本有多少是真正的正例。它的计算公式如下:

Precision = TP / (TP + FP)

召回率(Recall)是指在所有实际为正例的样本中,模型正确预测为正例的比例。召回率告诉我们模型有多少能够捕捉到真正的正例。它的计算公式如下:

Recall = TP / (TP + FN)

F1值是综合考虑了准确率和召回率的指标,它是准确率和召回率的加权调和平均值。F1值的计算公式如下:

F1 = 2 * (Precision * Recall) / (Precision + Recall)

7.完整代码:

import pandas as pd
import numpy as np
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

#库读取远程的 CSV 文件
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data')
data.head()
print(data.head())

#给列名字
names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape','Marginal Adhesion',
         'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin','Normal Nucleoli', 'Mitoses', 'Class']

#给data增加一个names参数
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',names = names)
#print(data.head())
data.Class#说明:2表示良性,4表示恶性
#print(data['Class'])

#替换缺失值
data = data.replace(to_replace='?',value=np.nan)
## 删除缺失值的样本
data = data.dropna() #删除有np.nan的行

#特征值
x = data.iloc[:,:-1]
x.head()

#目标值
y = data['Class']
y.head()

#表示将数据集中的 20% 作为测试集,剩下的 80% 作为训练集
#:x_train 是训练集的特征值,x_test 是测试集的特征值,y_train 是训练集的目标值,y_test 是测试集的目标值
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2)
transform = StandardScaler()#实例化转换器

#标准化
#标准化的目的是将不同尺度和单位的特征值转换为具有统一标准的值,以保证模型能够更好地学习和预测
# 通过标准化,可以使特征值的均值为0,标准差为1,从而使得特征值在相同的尺度范围内,避免不同特征值之间的偏差对模型造成影响。
x_train = transform.fit_transform(x_train)
x_test = transform.fit_transform(x_test)
mode= LogisticRegression()#用默认的就行
mode.fit(x_train,y_train)#得到了模型
y_predict = mode.predict(x_test)


#print("y_predict:\n", y_predict)
print("直接比对真实值和预测值:\n", y_test == y_predict)

# 计算准确率
accuracy = mode.score(x_test, y_test)
print("准确率为:\n", accuracy)

# 打印分类报告
res = classification_report(y_test, y_predict, labels=[2, 4], target_names=['良性', '恶性'])
print(res)



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

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

相关文章

初始MySQL(三)(合计函数,分组函数,字符串相关函数,数字相关函数,时间日期函数,加密函数,流程控制函数)

目录 合计/统计函数 count 返回行的总数 sum 合计函数 - avg group by 字符串相关函数 数学相关函数 时间日期相关函数 加密函数 流程控制函数 合计/统计函数 count 返回行的总数 Select count(*) | count (列名) from tablename [WHERE where_definition] #演…

国际阿里云:Windows实例中数据恢复教程!!!

在处理磁盘相关问题时,您可能会碰到操作系统中数据盘分区丢失的情况。本文介绍了Windows系统下常见的数据盘分区丢失的问题以及对应的处理方法,同时提供了使用云盘的常见误区以及最佳实践,避免可能的数据丢失风险。 前提条件 已注册阿里云账…

C/C++满足条件的数累加 2021年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C满足条件的数累加 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C满足条件的数累加 2021年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 现有n个整数,将其中个位数…

2022年03月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下面有关random的常用方法,描述错误的是? A: random.random()生成一个[0.0,1.0)之间的随机小数 B: random.randint(a,b)生成一个[a,b]之间的随机整数 C: random.choice(seq)从序列中…

RT-DTER 引入用于低分辨率图像和小物体的新 CNN 模块 SPD-Conv

论文地址:https://arxiv.org/pdf/2208.03641v1.pdf 代码地址:https://github.com/labsaint/spd-conv 卷积神经网络(CNN)在图像分类、目标检测等计算机视觉任务中取得了巨大的成功。然而,在图像分辨率较低或对象较小的更困难的任务中,它们的性能会迅速下降。 这源于现有CNN…

Anolis 8.6 安装 Drawio

Anolis 8.6 安装 Drawio 22.1.0 一.RPM版(不建议)二.WAR 包部署 一.RPM版(不建议) Draw RPM 包下载链接 RPM 包直接基于Linux图形化能力部署,服务器类型的Linux系统启动RPM包安装的Draw可能比较复杂 系统版本 ## 1.…

Leetcode刷题详解—— 有效的数独

1. 题目链接:36. 有效的数独 2. 题目描述: 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的…

Spark Job优化

1 Map端优化 1.1 Map端聚合 map-side预聚合,就是在每个节点本地对相同的key进行一次聚合操作,类似于MapReduce中的本地combiner。map-side预聚合之后,每个节点本地就只会有一条相同的key,因为多条相同的key都被聚合起来了。其他节…

Day28力扣打卡

打卡记录 给小朋友们分糖果 II(容斥原理) 链接 大佬的题解 def c2(n: int) -> int:return n * (n - 1) // 2 if n > 1 else 0class Solution:def distributeCandies(self, n: int, limit: int) -> int:return c2(n 2) - 3 * c2(n - limit …

Codeforces Round 788 (Div. 2) E. Hemose on the Tree(树上构造)

题目 t(t<5e4)组样例&#xff0c;每次给定一个数p&#xff0c; 表示一棵节点数为的树&#xff0c; 以下n-1条边&#xff0c;读入树边 对于n个点和n-1条边&#xff0c;每个点需要赋权&#xff0c;每条边需要赋权&#xff0c; 权值需要恰好构成[1,2n-1]的排列 并且当你赋…

基于springboot实现沁园健身房预约管理系统【项目源码】计算机毕业设计

基于springboot实现沁园健身房预约管理系统演示 B/S架构 B/S结构是目前使用最多的结构模式&#xff0c;它可以使得系统的开发更加的简单&#xff0c;好操作&#xff0c;而且还可以对其进行维护。使用该结构时只需要在计算机中安装数据库&#xff0c;和一些很常用的浏览器就可以…

Jenkins简介及Docker Compose部署

Jenkins是一个开源的自动化服务器&#xff0c;用于自动化构建、测试和部署软件项目。它提供了丰富的插件生态系统&#xff0c;支持各种编程语言和工具&#xff0c;使得软件开发流程更加高效和可靠。在本文中&#xff0c;我们将介绍Jenkins的基本概念&#xff0c;并展示如何使用…

[.NET]启明星电子文档管理系统edoc v33.0

启明星电子文档库是一个简单、实用的企业文档在线存储工具。系统采用ASP.NETMSSQL2008 Express开发&#xff0c;所有文档数据都以二进制方式存储在数据库里方便备份。 系统的特点包括&#xff1a; &#xff08;1&#xff09;支持文档在线预览&#xff0c;可以在线预览word&…

pta 装箱问题 Python3

假设有N项物品&#xff0c;大小分别为s1​、s2​、…、si​、…、sN​&#xff0c;其中si​为满足1≤si​≤100的整数。要把这些物品装入到容量为100的一批箱子&#xff08;序号1-N&#xff09;中。装箱方法是&#xff1a;对每项物品, 顺序扫描箱子&#xff0c;把该物品放入足以…

mini-vue 的设计

mini-vue 的设计 mini-vue 使用流程与结果预览&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name&qu…

LLM 面试总结

溜一遍 MLStack.Cafe - Kill Your Next Machine Learning & Data Science Interview https://www.llmforce.com/llm-interview-questions MLStack.Cafe - Kill Your Next Machine Learning & Data Science Interview An interview with a language model, ChatGPT - W…

阿里云国际站:专有宿主机

文章目录 一、专有宿主机的概念 二、专有宿主机的优势 三、专有宿主机的应用场景 一、专有宿主机的概念 专有宿主机&#xff08;Dedicated Host&#xff0c;简称DDH&#xff09;是阿里云专为企业用户定制优化的解决方案。具有物理资源独享、部署更灵活、配置更丰富、性价比…

python实现一个简单的桌面倒计时小程序

本章内容主要是利用python制作一个简单的桌面倒计时程序&#xff0c;包含开始、重置 、设置功能。 目录 一、效果演示 二、程序代码 一、效果演示 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb """import tkin…

分类预测 | Matlab实现PSO-BiLSTM粒子群算法优化双向长短期记忆神经网络的数据多输入分类预测

分类预测 | Matlab实现PSO-BiLSTM粒子群算法优化双向长短期记忆神经网络的数据多输入分类预测 目录 分类预测 | Matlab实现PSO-BiLSTM粒子群算法优化双向长短期记忆神经网络的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO-BiLSTM粒子…

sqli-labs关卡13(基于post提交的单引号加括号的报错盲注)通关思路

文章目录 前言一、回顾第十二关知识点二、靶场第十三关通关思路1、判断注入点2、爆显位3、爆数据库名4、爆数据库表5、爆数据库列6、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;…