【机器学习练习】糖尿病预测

news2024/9/27 12:09:05
  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

一、数据预处理

1. 数据导入

import numpy             as np
import pandas            as pd
import seaborn           as sns
from sklearn.model_selection   import train_test_split

import matplotlib.pyplot as plt
plt.rcParams['savefig.dpi'] = 500 #图片像素
plt.rcParams['figure.dpi']  = 500 #分辨率

import warnings 
warnings.filterwarnings("ignore")

DataFrame=pd.read_excel(r'D:\Personal Data\Learning Data\DL Learning Data\dia.xls')
DataFrame.head()

在这里插入图片描述

2. 数据检查

# 查看数据是否有缺失值
print('数据缺失值---------------------------------')
print(DataFrame.isnull().sum())

在这里插入图片描述

二、数据分析

1. 数据分布分析

feature_map = {
    '年龄': '年龄',
    '低密度脂蛋白胆固醇': '高密度脂蛋白胆固醇',
    '低密度脂蛋白胆固醇': '低密度脂蛋白胆固醇',
    '极低密度脂蛋白胆固醇': '极低密度脂蛋白胆固醇',
    '甘油三酯': '甘油三酯',
    '总胆固醇': '总胆固醇',
    '脉搏': '脉搏',
    '舒张压':'舒张压',
    '高血压史':'高血压史',
    '尿素氮':'尿素氮',
    '尿酸':'尿酸',
    '肌酐':'肌酐',
    '体重检查结果':'体重检查结果'
}
plt.figure(figsize=(15, 10))

for i, (col, col_name) in enumerate(feature_map.items(), 1):
    plt.subplot(3, 4, i)
    sns.boxplot(x=DataFrame['是否糖尿病'], y=DataFrame[col])
    plt.title(f'{col_name}的箱线图', fontsize=14)
    plt.ylabel('数值', fontsize=12)
    plt.grid(axis='y', linestyle='--', alpha=0.7)

plt.tight_layout()
plt.show()

在这里插入图片描述

2. 相关性分析

import plotly
import plotly.express as px

# 删除列 '卡号'
DataFrame.drop(columns=['卡号'], inplace=True)
# 计算各列之间的相关系数
df_corr = DataFrame.corr()

# 相关矩阵生成函数
def corr_generate(df):
    fig = px.imshow(df,text_auto=True,aspect="auto",color_continuous_scale='RdBu_r')
    fig.show()

# 生成相关矩阵
corr_generate(df_corr)

在这里插入图片描述

三、随机森林模型

1. 数据集构建

# '高密度脂蛋白胆固醇'字段与糖尿病负相关,故而在 X 中去掉该字段
X = DataFrame.drop(['是否糖尿病','高密度脂蛋白胆固醇'],axis=1)
y = DataFrame['是否糖尿病']

train_X, test_X, train_y, test_y = train_test_split(X, y, 
                                                    test_size=0.2,
                                                    random_state=1)

2. 定义模型

from sklearn.ensemble import RandomForestClassifier

# 构建随机森林模型
rf_clf = RandomForestClassifier(random_state=15)
rf_clf.fit(train_X, train_y)

四、模型评估

1. 性能评估

from sklearn.metrics import classification_report

# 使用随机森林进行预测
pred_y_rf = rf_clf.predict(test_X)
class_report_rf = classification_report(test_y, pred_y_rf)
print(class_report_rf)

在这里插入图片描述

2. 相关性分析

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签

feature_importances = rf_clf.feature_importances_
features_rf = pd.DataFrame({'特征': X.columns, '重要度': feature_importances})
features_rf.sort_values(by='重要度', ascending=False, inplace=True)
plt.figure(figsize=(6, 5))
sns.barplot(x='重要度', y='特征', data=features_rf)
plt.xlabel('重要度')
plt.ylabel('特征')
plt.title('随机森林特征图')
plt.show()

在这里插入图片描述

五、总结

选择特征时,注意选择具有一定波动性,且与待预测值的相关性高的。

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

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

相关文章

第二十九节、场景管理和切换

使用这个加载场景,实现场景的切换 是一个打包工具,使包体变小,不会重复打包包体 这个也可以远程进行打包,将代码上传到网上的库中,实现热更新 勾选后就会默认将当前场景加载到这里 简化名字 当物体需要跨场景&#xf…

观测云对接 Pinpoint 最佳实践

简介 Pinpoint 是一个开源的分布式应用性能监控工具,由韩国搜索引擎公司 Naver 开发。它主要用于跟踪和监控分布式应用程序和微服务架构中的性能问题。Pinpoint 的核心功能包括对分布式链路的追踪和监控,通过收集和分析数据来帮助开发者定位问题所在。P…

node版本管理工具Node Version Manager(nvm)的安装及使用

文章目录 一、nvm安装1.1,下载nvm安装包程序(选最高版本安装即可,安装前先把本机电脑node卸载,不然管理不到)双击安装包进行安装(傻瓜式下一步即可) 二、配置镜像2.1、使用管理员运行命令提示符2.2、检查nv…

健康减调攻略:1月轻松掉十斤

减调减调,有减才有调,饮食为调、运动重在减,他们是相互作用的,要瘦,只有饮食与运动结合才能事半功倍。 饮食调减: 不需要花多大钱,也不用费精力和时间自己做饭,或狂抠饮食量和食物…

6款ai伪原创软件app,自动生成文章效率更高

在当今信息爆炸的时代,内容创作的需求日益增长。无论是专业的写手、自媒体从业者,还是企业的营销人员,都在不断寻求提高创作效率的方法。而ai伪原创软件app的出现,为创作者们带来了新的解决方案。下面就为大家介绍6个强大的ai伪原…

6款大学生电脑里的必装软件,装进电脑慢慢用

分享6款大学生爱用的windows软件,个个功能强大,装进电脑能提升效率,让大学生活更轻松! 1、Everything 大学四年怎么都得积攒下一堆PPT和文档,日子久了存放的乱七八糟,想找的时候一个头两个大。这时候Every…

中断和异常(X86架构)

中断和异常是强制性的执行流的转移,从当前正在执行的任务或程序转移到一个特殊的称作句柄的例程或任务。当硬件发出信号时,便产生中断,中断的产生是同现在正在执行的任务是异步的,即中断的产生是随机的。异常是处理器在执行指令的…

2024年金属非金属矿山(露天矿山)安全管理人员证考试题库及金属非金属矿山(露天矿山)安全管理人员试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年金属非金属矿山(露天矿山)安全管理人员证考试题库及金属非金属矿山(露天矿山)安全管理人员试题解析是安全生产模拟考试一点通结合(安监局)…

后端给前端传递数据形式:广播 单播以及组播

目录 1.单播2.广播3.组播4.任播5.总结 网络数据在传输时需要使用特定的传输方式,其中最常见的包括单播、广播、组播和任播。本文将对这四种不同的网络传输方式进行详细介绍,并列举多个例子以说明不同场景下使用何种传输方式。 1.单播 单播是指一种向单个…

联想24春招算法方向部分试题解析

来自牛客题库,浅浅记录一下 CNN模型支持输入不定长序列:错。CNN模型通常用于处理具有固定尺寸输入的图像或类似结构的数据。虽然可以通过一些技术(如滑动窗口或填充)来处理不同尺寸的图像,但CNN本身并不直接支持输入…

解决arcmap发布影像切片,注册传输数据慢的问题

1、本地服务器进行切片步骤: 开发环境按照正常方案发布影像切片。 2、生产环境切片步骤 a、使用范文等同影像文件范围的矢量面数据,作为切片数据发布切片服务 重点:【服务名称必须一致】 b、获取开发环境切片的切片方案文件conf.xml 重点&am…

探索Python的配置管理大师:ConfigParser的奥秘

文章目录 探索Python的配置管理大师:ConfigParser的奥秘背景:为什么选择ConfigParser?库简介:ConfigParser是什么?安装指南:如何安装ConfigParser?基础用法:五个简单函数介绍1. 创建…

Milvus实践(5) ---- 从attu2.4x窥探Milvus数据结构变化及原理

目录 背景 启动 attu 首页 数据库 系统信息 剖析数据库存储 整体 集合描述 collection & shard segment & partition index 图解 设计动机 可视化对应部分 collection partition segment 查询数据段状态 持久数据段状态 query部分 向量搜索 scal…

PyCharm 运行项目时python 项目时报错:Please select a valid Python interpreter的处理办法

目录 问题现象 问题原因 问题解决办法 问题现象 问题如下图所示: 这种情况下,强行运行也依旧是会报错的。 问题原因 没有选择运行Python的程序。 问题解决办法 修改PyCharm设置: 文件---设置(在热键不冲突的情况下&#…

一张期权要多少钱?期权杠杆能做到以小博大吗?

今天带你了解一张期权要多少钱?期权杠杆能做到以小博大吗?做期权交易需要的资金几百元几千元都可以的,除了开户验资的门槛比较高(当然也可以选择三方平台开户),期权的权利金都是几元、几百元、几千元都有的…

电容器在高原使用时是否会降容

电容器在高原使用时可能会出现降容现象,主要是由于高原环境的特殊条件引起的。以下是影响电容器在高原地区性能的关键因素: 1、环境气压: 气压降低:在高海拔地区,气压较低,空气密度减少,这会影…

IPython的魔法命令 %timeit 来测试 代码执行时间

在科学计算和数据分析领域,NumPy库是Python中最受欢迎的工具之一。它提供了强大的数组处理能力,使得矩阵运算变得简单高效。本文将介绍如何在Python中使用NumPy进行矩阵乘法,并通过IPython的魔法命令%timeit来测试其执行时间。 # 运行结果&am…

怎么把JPG转成PDF?这3种转换方法一定不要错过

在平时的工作生活当中,把JPG图片转换成PDF文件是一种非常常见的工作需求,无论是为了保护图片文件还是为了方便打印传输,JPG转PDF都是一项非常实用的技术,但是经常有很多新入职场的小伙伴们不知道怎么把图片转成PDF,今天…

npm阿里云制品仓库

配置 配置仓库地址,可以再在仓库指南看到 npm config set registryxxxxx#登录,帐户密码可以在仓库指南看到 npm login注意:npm>9的版本npm login目前有问题 verbose web login not supported, trying couch,暂时没试验到解决…

AI绘制思维导图:使用SpringBoot和Vue实现智能可视化

目录 引言: 思维导图的重要性和应用场景: AI在思维导图绘制中的应用: 概述SpringBoot和Vue框架的特点: 第一部分:思维导图概述 思维导图的定义和历史 思维导图的结构和组成部分 思维导图在不同领域的应用案例 …