心血管疾病预测--逻辑回归实现二分类

一、实现效果

  实现心血管疾病的预测准确率70%以上

二、数据集介绍

 数据共计70000条,其中心血管疾病患者人数为34979,未患病人数为35021。数据特征属性12个分别为如下所示:生理指标(性别、年龄、体重、身高等)、 医疗检测指标(血压、血糖、胆固醇水平等)和患者提供的主观信息(吸烟、饮酒、运动等):

age年龄
gender性别 1女性, 2 男性
height身高
weight 体重
ap_hi收缩压
ap_lo 舒张压
cholesterol胆固醇 1:正常; 2:高于正常; 3:远高于正常

gluc 葡萄糖,1:正常; 2:高于正常; 3:远高于正常

smoke 病人是否吸烟 alco 酒精摄入量

active 体育活动

cardio 有无心血管疾病,0:无;1:有

数据来源;http://idatascience.cn/

三、实现步骤

3.1 数据导入与分析

# 导入需要的工具包
import pandas as pd # data processing
import numpy as np
import matplotlib.pyplot as plt
#matplotlib inline
import seaborn as sns  # plot

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report,confusion_matrix
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
import warnings
warnings.filterwarnings("ignore")
import random


data = pd.read_csv('E: /心脏疾病预测分析/cardio_train.csv',sep=',')
data.drop(columns=['id'],inplace=True)
data.head()

 

 

 相关性分析:

correlations = data.corr()['cardio'].drop('cardio') #drop默认删除行
print(correlations)

 

 

3.2  划分数据集(训练数据集、测试数据集、验证数据集)

# 切分数据集
np.random.seed(1)#便于调试代码(设置种子-保证执行代码样本及结果一致--稳定复现结果)
# 获取当前随机状态
state = random.getstate()
# 获取随机种子
seed = state[1][0]

msk = np.random.rand(len(data))<0.85
df_train_test = data[msk]# 筛选出59450个随机样本
df_val = data[~msk]#剩下的随机样本--用作验证数据集

X = df_train_test.drop('cardio',axis=1)#删除最后一列,只包含样本特征
y = df_train_test['cardio']#样本对应的标签
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=70)#调用的训练和测试数据集样本划分函数

3.3  数据标准化

# 数据标准化
scale = StandardScaler()
scale.fit(X_train)
X_train_scaled = scale.transform(X_train)
X_train_ = pd.DataFrame(X_train_scaled,columns=data.columns[:-1])#添加列名,除去最后一列名(标签)

scale.fit(X_test)
X_test_scaled = scale.transform(X_test)
X_test_ = pd.DataFrame(X_test_scaled,columns=data.columns[:-1])

 3.4  特征选择

逻辑回归默认的算法为:lbfgs,L2正则化项。

模型的具体参数信息:


#特征选择
def feat_select(threshold):
    abs_cor = correlations.abs()
    features = abs_cor[abs_cor > threshold].index.tolist()
return features
def model(mod,X_tr,X_te):
mod.fit(X_tr,y_train)
pred = mod.predict(X_te)
print('Model score = ',mod.score(X_te,y_test)*100,'%')#子集准确性
# 逻辑回归
 #筛选出合适的阈值
lr = LogisticRegression()
#lr = LogisticRegression(penalty='l2', solver='saga')
# lr = LogisticRegression(solver='newton-cholesky')
# lr = LogisticRegression(solver='sag')
# lr = LogisticRegression(solver='newton-cg')

threshold = [0.001,0.002,0.005,0.01,0.02,0.05,0.06,0.08,0.1]
for i in threshold:
    print("Threshold is {}".format(i))
    feature_i = feat_select(i)
    X_train_i = X_train[feature_i]#训练集
    X_test_i = X_test[feature_i]#测试集
    model(lr,X_train_i,X_test_i)
feat_final = feat_select(0.005)# 筛选出重要特征,列表
print(feat_final)

 3.5  预测及结果评估

#验证数据集的标准化
X_val = np.asanyarray(df_val[feat_final])#删除最后一列,只包含样本特征  --转换为数组
y_val = np.asanyarray(df_val['cardio']) #--转换为数组

scale.fit(X_val)
X_val_scaled = scale.transform(X_val)
X_val_ = pd.DataFrame(X_val_scaled,columns=df_val[feat_final].columns)

#逻辑回归预测
lr.fit(X_train,y_train)
pred = lr.predict(X_val_)
#结果评估
print('Confusion Matrix =\n',confusion_matrix(y_val,pred))
print('\n',classification_report(y_val,pred))
lr.get_params()

 参考:

   sklearn.linear_model.LogisticRegression — scikit-learn 1.2.2 documentation

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

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

相关文章

青龙面板使用教程,以及安装

1. 青龙面板使用教程&#xff0c;以及安装 首先青龙面板是在docker里面的&#xff0c;我们要安装一个docker 我这里只有debian 11 安装的教程 如何在debian11上安装docker - 知乎 这个文章不错了&#xff0c;按命令执行就好了&#xff0c;其他操作系统的。去网上搜索安…

Helm方式部署 zookeeper+kafka 集群 ——2023.05

文章目录 版本概况一、添加helm仓库二、安装部署集群2.1 在线安装zookeeperkafka集群2.2 离线安装zookeeperkafka集群 三、验证kafka与zookeeper是否绑定四、测试集群附&#xff1a;可改善地方卸载应用 版本概况 服务版本centos7.9kubernetesv1.20.15helmv3.10.1zookeeper3.8.…

Python通过natcap.invest库调用InVEST模型批处理数据(Carbon Storage and Sequestration模块)

InVEST&#xff08;Integrated Valuation of Ecosystem Servicesand Tradeoffs&#xff09;生态系统服务和权衡的综合评估模型&#xff0c;旨在通过模拟不同土地覆被情景下生态系统物质量和价值量的变化。它提供了多种生态系统服务功能评估&#xff0c;包括了淡水生态系统评估、…

【问题记录】USB monitor抓包工具显示音频数据CRC error

一&#xff0c;简介 在进行UAC2.0调试的过程中&#xff0c;使用USB monitor抓包工具抓取音频流数据出现数据错乱现象&#xff0c;本文对该问题进行分析记录。 二&#xff0c;问题记录及分析过程 2.1 先看下正常的抓包数据是什么样子&#xff1a; 从上图可以看出&#xff0c;…

《The Element of Style》阅读笔记 —— 章节 I Elementary Rules of Usage

前言&#xff1a;本科期间担任科研助理时&#xff0c;有幸从导师那里借来这本书通读&#xff0c;只记得自己当时在本子上做了一些笔记&#xff0c;但是想不起来具体记了什么&#x1f602;前段时间再次从学院的讲座活动中听闻这本书&#xff0c;决定重温一遍&#xff0c;本篇为此…

js原生实现pc端日历组件

业务场景 客户要求日期选择使用pc端的样式&#xff0c;前端在x5平台上&#xff0c;也就是需要用原始html、js、css等实现&#xff0c;笔者使用于 原生javascript封装的PC端日历插件&#xff0c;不依赖任何第三方插件&#xff0c;复制的代码文件较长&#xff0c;可跳到 总结 处…

React 内 JSX了解及使用

目录 jsx基本概念及例子 jsx的基本用法 JSX表达式&#xff08;有执行结果&#xff09; {} 语法嵌入不同的值 所呈现出来的特点 标签内行内样式 自定义组件 驼峰命名 Jsx的全称是Javascript XML&#xff0c;react定义的一种类似XML的JS拓展语法&#xff1a;JSXML&#xf…

Go Etcd 分布式锁实战

1 分布式锁概述 谈到分布式锁&#xff0c;必然是因为单机锁无法满足要求&#xff0c;在现阶段微服务多实例部署的情况下&#xff0c;单机语言级别的锁&#xff0c;无法满足并发互斥资源的安全访问。常见的单机锁如Java的jvm锁Lock、synchronized&#xff0c;golang的Mutex等 对…

类和对象(三)

目录 前言 1.再谈构造函数 1.1 初始化列表 1.2 explicit关键字 2.static成员 2.1 概念 2.2 特性 3.友元 3.1. 友元函数 3.2 友元类 4.内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 前言 今天小编给大家介绍的就是类最后的相关内容&#xff0c;希望大家好好学习理…

什么是可信时间戳?可信时间戳电子取证有效吗?

电子数据具有脆弱性、易变性、隐蔽性、载体多样性等特点&#xff0c;容易被复制、删除、篡改且难以被发现。因此&#xff0c;电子数据在实际的司法认定过程中&#xff0c;很难准确鉴定其生成的时间以及内容的真实性、完整性。可信时间戳是一种公认的技术手段&#xff0c;可为电…

精选 100 种最佳 AI 工具大盘点

为了应对对精简流程和数据分析日益增长的需求&#xff0c;整合人工智能工具在多个领域变得至关重要。 本文精选了2023年可用的100种最佳人工智能工具&#xff0c;旨在提高您的生产力、创造力和效率。 以下是 2023 年排名前 100 的人工智能工具&#xff1a; Aidoc&#xff1a;A…

Python获取酷得music并下载,获得无限听

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests re win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源) 代码实现步骤 <基…

springCloud使用maven

springCloud项目使用maven集成nexus 一&#xff1a;故事背景二&#xff1a;基础概念2.1 什么是Maven2.2 什么是nexus 三&#xff1a;实操3.1 setting文件配置3.2 项目内pom.xml配置3.3 jar上传3.3.1 maven插件上传3.3.2 mvn命令上传3.3.3 页面上传3.3.4 通过Rest的方式进行上传…

麻了,真的不想做测试了...

前言 有不少技术友在测试群里讨论&#xff0c;近期的面试越来越难了&#xff0c;要背的八股文越来越多了,考察得越来越细&#xff0c;越来越底层&#xff0c;明摆着就是想让我们徒手造航母嘛&#xff01;实在是太为难我们这些测试工程师了。 这不&#xff0c;为了帮大家节约时…

今年这情况,大家多一手准备吧......

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…

Jmeter +Maven+jenkins 接口性能全自动化测试

背景&#xff1a; 首先用jmeter录制或者书写性能测试的脚本&#xff0c;用maven添加相关依赖&#xff0c;把性能测试的代码提交到github&#xff0c;在jenkins配置git下载性能测试的代码&#xff0c;配置运行脚本和测试报告&#xff0c;配置运行失败自动发邮件通知&#xff0c…

桂院校园导航小程序 云开发项目 二次开发教程 1.0.1

Gitee代码仓库&#xff1a;桂院校园导航小程序 GitHub代码仓库&#xff1a;GLU-Guide 先 假装 大伙都成功安装了云开发项目&#xff0c;并能在 微信开发者工具 和 手机 上正确运行。 接着就是 将项目 改成自己的学校。 代码里的注释我就不说明了&#xff0c;有提到 我的学校…

【实践篇】教你玩转JWT认证---从一个优惠券聊起 | 京东云技术团队

引言 最近面试过程中&#xff0c;无意中跟候选人聊到了JWT相关的东西&#xff0c;也就联想到我自己关于JWT落地过的那些项目。 关于JWT&#xff0c;可以说是分布式系统下的一个利器&#xff0c;我在我的很多项目实践中&#xff0c;认证系统的第一选择都是JWT。它的优势会让你…

Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

API接口设计方案

API&#xff08;Application Programming Interface&#xff09;接口是一种用于与应用程序进行交互的标准化接口&#xff0c;它允许第三方应用程序通过网络调用应用程序的功能。设计API接口是开发人员在开发软件系统时的重要任务之一&#xff0c;因为API接口的质量和易用性直接…