新闻详情

新闻详情

首页 / 资讯中心 / 详情

深度学习基础|第R2周 医疗成本预测

发布时间:2026/10/2 16:20:22来源:尧图网络
深度学习基础|第R2周 医疗成本预测
第R2周医疗成本预测 本文为365天深度学习训练营 中的学习记录博客 原作者K同学啊编译器jupyterlab一、前期准备1. 数据导入2. 探索热力图numeric_colsdf.select_dtypes(include[int64,float64])plt.figure(figsize(12,8))sns.heatmap(numeric_cols.corr(),cmapcoolwarm,annotTrue)plt.title(Correlation Heatmap)plt.show()Correlation Heatmap相关性热图不同数值变量之间 Pearson 相关系数correlation coefficient的大小。其中insurance_coverage_pct vs annual_medical_cost 的 r-0.86说明二者存在较强烈的线性关系即可能意味着特征冗余。此时纳入机器学习会导致回归参数不稳定、标准误增加。3. 探索分类特征与回归数值的关系3.1 箱线图importmatplotlib.pyplotaspltimportseabornassnsfrommatplotlib.font_managerimportFontProperties#中文字体路径fontFontProperties(fname/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc)# Seaborn风格设置sns.set_style(darkgrid)sns.set(font_scale0.8)# 创建matplotlib的fig对象和子图对象axfig,axplt.subplots(1,3,figsize(12,4))# 多个数值变量的箱线图sns.boxplot(datadf.loc[:,[annual_medical_cost]],axax[0],whis3)ax[0].set_title(多个数值变量,fontpropertiesfont)# 一个数值变量多个分组的箱线图sns.boxplot(xdf[hospital_admissions],ydf[annual_medical_cost],axax[1],whis3)ax[1].set_title(一个数值变量多个分组,fontpropertiesfont)# 一个数值变量多个分组子分组的箱线图sns.boxplot(xhospital_admissions,yannual_medical_cost,huesmoker,datadf,paletteSet1,width0.5,axax[2],whis3)ax[2].set_title(一个数值变量多个分组/子分组,fontpropertiesfont)plt.tight_layout()plt.show()在这里插入图片描述由于字体无法显示原因修改了代码3.2 小提琴图# Seaborn风格设置sns.set(font_scale0.8,styledarkgrid)# 创建fig和子图fig,axplt.subplots(1,3,figsize(12,4))# 多个数值变量的小提琴图sns.violinplot(datadf.loc[:,[annual_medical_cost]],axax[0])ax[0].set_title(多个数值变量,fontpropertiesfont)# 一个数值变量多个分组sns.violinplot(xdf[heart_disease],ydf[annual_medical_cost],axax[1])ax[1].set_title(一个数值变量多个分组,fontpropertiesfont)# 一个数值变量多个分组/子分组sns.violinplot(xheart_disease,yannual_medical_cost,huesmoker,datadf,paletteSet1,width0.5,axax[2])ax[2].set_title(一个数值变量多个分组/子分组,fontpropertiesfont)plt.tight_layout()plt.show()3.3 条形统计图和散点图探索sns.set_style(darkgrid)plt.figure(figsize(6,4))sns.barplot(xheart_disease,yannual_medical_cost,datadf,errorbarci)plt.title(不同心脏病状态的平均医疗费用,fontpropertiesfont)plt.xlabel(Heart Disease)plt.ylabel(Annual Medical Cost)plt.show()plt.figure(figsize(7,4))sns.stripplot(xheart_disease,yannual_medical_cost,datadf,jitterTrue)plt.title(不同心脏病状态下医疗费用分布,fontpropertiesfont)plt.show()4. 探索数值特征与回归特征的关系4.1 气泡图4.2散点图回归线二、数据预处理1. 处理缺失值2. 编码object对象即代表1、3、8、15、17列为类别变量oe OrdinalEncoder() 创建编码器自动分配数字具有大小关系3. 划分训练集与测试集4. 探索字段重要性排行5. 标准化6. 创建dataloaderfromtorch.utils.dataimportDataLoader batch_size32# 封装数据train_datasetdata.TensorDataset(X_train,y_train)test_datasetdata.TensorDataset(X_test,y_test)# 加载数据train_dataloaderDataLoader(train_dataset,batch_sizebatch_size,shuffleTrue)#test_dataloaderDataLoader(test_dataset,batch_sizebatch_size)#, shuffleTrue三、构建模型1. 设置模型参数devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)devicedevice(typecuda)2. 定义模型classmodel_lstm(nn.Module):def__init__(self):super(model_lstm,self).__init__()self.lstm0nn.LSTM(input_size19,hidden_size200,num_layers1,batch_firstTrue)#LSTM内部隐藏状态维度 200维1层self.fc0nn.Linear(200,1)defforward(self,x):out,_self.lstm0(x)outself.fc0(out)returnout modelmodel_lstm()fromtorchinfoimportsummary summary(model,(64,1,19))做了两件事定义一个 LSTM 神经网络模型用 torchinfo.summary() 查看模型结构和参数量3. 编写训练函数deftrain(dataloader,model,loss_fn,optimizer):sizelen(dataloader.dataset)num_batcheslen(dataloader)train_loss,train_acc0,0pred_list[]y_list[]forX,yindataloader:X,yX.to(device),y.to(device)predmodel(X)predpred.squeeze()y_list[i.detach().numpy()foriiny.cpu()]pred_list[i.detach().numpy()foriinpred.cpu()]#lossloss_fn(pred,y)optimizer.zero_grad()loss.backward()optimizer.step()train_lossloss.item()R2metrics.r2_score(y_list,pred_list)#第一个必须是真实值第二个必须是预测值否值 R2 可能会为负数train_loss/num_batchesreturnR2,train_loss4. 编写测试函数deftest(dataloader,model,loss_fn):sizelen(dataloader.dataset)num_batcheslen(dataloader)test_loss,test_acc0,0pred_list[]y_list[]withtorch.no_grad():forX,yindataloader:X,yX.to(device),y.to(device)predmodel(X)predpred.squeeze()y_list[i.detach().numpy()foriiny.cpu()]pred_list[i.detach().numpy()foriinpred.cpu()]lossloss_fn(pred,y)test_lossloss.item()R2metrics.r2_score(y_list,pred_list)test_loss/num_batchesreturnR2,test_loss四、训练模型五、Loss与R2图今天就没有总结啦学习内容都放在各章节里了。这一章对我们临床研究的人很友好顺便还温故了一些统计学知识。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

微信开源知识库实战:用Ollama+Dify搭建本地RAG全流程 2026/10/2 18:58:15

微信开源知识库实战:用Ollama+Dify搭建本地RAG全流程

我最近把微信团队开源的那套知识库项目完整过了一遍,也顺手在自己机器上搭了一个本地 RAG 环境做验证,整个过程踩了一些坑,但收获确实很大。如果你也在关注开源知识库相关的话题,或者正在为团队搭建企业级问答系统,这篇…

阅读更多 →
条件传送指令cmov:用数据流替代控制流,彻底消除分支预测惩罚 2026/10/2 18:58:15

条件传送指令cmov:用数据流替代控制流,彻底消除分支预测惩罚

学完3.6.5的时候,我以为控制流这块已经通了:C语言里的if/else,编成汇编无非就是比较、跳转、标签,根据标志位跳来跳去。直到翻开3.6.6“用条件传送来实现条件分支”,才发现同样一份C代码,在优化级别打开之后…

阅读更多 →
Strands Agents Harness SDK:一行代码交付生产级AI智能体 2026/10/2 18:58:15

Strands Agents Harness SDK:一行代码交付生产级AI智能体

1. 项目概述:为什么 Strands Agents Harness SDK 是 Agent 开发的“分水岭时刻”我第一次在内部技术分享会上看到 Strands Agents Harness SDK 的演示时,手里的咖啡杯停在半空——不是因为炫酷的 UI 或夸张的性能数字,而是因为它把过去三个月…

阅读更多 →
GWO-BP-AdaBoost预测算法Matlab实现:从初值优化到集成学习 2026/10/2 18:58:15

GWO-BP-AdaBoost预测算法Matlab实现:从初值优化到集成学习

写预测模型的同行应该都有过这种体验:BP神经网络调了半天,结构、学习率、训练次数都试遍了,测试集精度就是卡在一个不上不下的位置。问题往往不在BP本身,而在它的初始权值和阈值上。梯度下降天生吃初值,初始位置不好&a…

阅读更多 →
CS146S 各节核心内容概要:从 LLM 到编程智能体的上下文工程实践 2026/10/2 18:57:56

CS146S 各节核心内容概要:从 LLM 到编程智能体的上下文工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SQL Server 2022本地环境搭建与约束验证实战指南 2026/10/2 18:57:56

SQL Server 2022本地环境搭建与约束验证实战指南

简介:本资源是太原理工大学软件工程专业《数据库概论》课程配套的完整实验报告,面向高校计算机类专业学生及数据库初学者,聚焦SQL Server 2016环境下数据库核心操作的实践训练。报告覆盖数据定义(CREATE/ALTER/DROP TABLE&#xf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉