当前位置:   article > 正文

Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸烟与健康调查数据...

Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸烟与健康调查数据...

全文链接:https://tecdat.cn/?p=36648

在当今的数据驱动时代,机器学习算法已成为解析复杂数据集、揭示隐藏模式及预测未来趋势的重要工具(点击文末“阅读原文”获取完整代码数据)。

相关视频

特别是在医疗健康领域,这些算法的应用极大地提升了我们对疾病预防、诊断及治疗方案的理解与制定能力。本文旨在通过Python中的决策树、神经网络及随机森林等经典机器学习算法,对吸烟、体重变化与健康数据进行可视化分析,以期发现它们之间的潜在关系,为公共卫生政策制定、个性化健康管理提供科学依据。

吸烟与体重变化作为影响人类健康的重要因素,长期以来一直受到医学界和社会各界的广泛关注。吸烟不仅与多种癌症、心血管疾病等直接相关,还可能通过影响食欲、代谢率等机制间接导致体重变化。而体重的显著变化,无论是增加还是减少,都可能对个体的整体健康状况产生深远影响。因此,深入探讨这三者之间的关系,对于制定有效的健康干预措施具有重要意义。

数据

调查旨在研究第一次全国健康与营养调查评估的临床、营养和行为因素与随后的发病率、死亡率和住院率之间的关系。

第一次全国健康与营养调查所评估的临床、营养和行为因素与随后的发病率、死亡率和医院使用率之间的关系,以及风险因素、功能限制和入院治疗的变化。

21ff0d8d0af497c140b61a6f9010c57e.png

变量的详细解释:

  1. age: 年龄,表示被调查者在进行调查时的年龄。年龄是评估健康状况和预测未来健康风险的重要因素。

  2. sex: 性别,表示为男性或女性。性别在健康研究中是一个重要的变量,因为男性和女性在健康风险、疾病表现和响应治疗方面可能存在差异。

  3. race: 种族,指的是被调查者的种族背景。种族可能会影响健康状况、健康行为和获取医疗资源的途径。然而,需要注意的是,种族是一个复杂且敏感的概念,其定义和分类可能因文化和历史背景而异。

针对调查的数据集进行可视化分析和临床分析,结合机器学习、深度学习技术,可以深入探索健康与营养因素、行为模式与后续健康状况之间的关系。

1. 基本统计与可视化分析

首先,我将加载并查看提供的数据集,以便更好地理解其结构和内容。这将帮助我进行后续的数据分析和可视化。

数据集已成功加载。

a. 人口统计学特征分析

  • 年龄与性别分布:绘制年龄-性别分布图,了解样本的基本构成。

  • 种族与教育水平:分析不同种族间的教育水平差异,探讨其对健康的影响。

  1. # 绘制年龄与性别分布图
  2. plt.figure(figsize=(12, 6))
  3. sns.histplot(data=data, x='age', hue='sex', multiple='stack', stat='count', common_norm=False, palette=colors[:2])
  4. plt.title('年龄与性别分布图')
  5. plt.xlabel('年龄')
  6. plt.ylabel('人数')
  7. plt.legend(title='性别', labels=['女性', '男性'])
  8. plt.show()

74398445849e666736032e4ce10f2b69.png

接下来,我将分析不同种族间的教育水平差异。

0abcfc80ddc4583ba2edd3238e9f7a69.png

b. 行为习惯分析

  • 吸烟习惯:使用条形图或饼图展示吸烟者与非吸烟者的比例,以及吸烟强度(smokeintensity)和吸烟年数(smokeyrs)的分布。

  • 体育活动:分析体育锻炼(exercise)和日常活动水平(active)的分布,探讨其与健康的关系。

接下来,我将分析吸烟习惯,包括吸烟者与非吸烟者的比例,以及吸烟强度和吸烟年数的分布。

7fa5cc95b56876df3617bd7ad5c3721f.png

e03a3f0a937dbe69c1b7a290cbfa4e8b.png

吸烟习惯的分析结果如下:

  • 吸烟者与非吸烟者的比例:根据数据,有1566位吸烟者,没有非吸烟者。这表明在这个样本中,所有人都有吸烟习惯。

  • 吸烟强度分布:由于样本中所有人都有吸烟习惯,因此吸烟强度的分布图显示了吸烟强度的分布情况。

  • 吸烟年数分布:同样,由于样本中所有人都有吸烟习惯,吸烟年数的分布图也显示了吸烟年数的分布情况。

接下来,我将分析体育锻炼和日常活动水平的分布。

cf76eef053ab99163a602bb87957acfb.png

bd2606af42749980677f92eca0b67f8a.png

  • 体育锻炼分布图显示了样本中不同体育锻炼水平的分布情况。

  • 日常活动水平分布图展示了样本中不同日常活动水平的分布情况。

c. 体重变化与健康

  • 体重变化:利用折线图或散点图展示10年(wt82_71)的体重变化,分析体重变化与后续健康问题的关联。

最后,我将分析体重变化。

plt.show()

53a6f98596330cb26d4b41807997d36a.png

这个图表展示了样本中个体在体重变化情况。每个点代表一个个体,横坐标表示71年的体重,纵坐标表示82年的体重。


点击标题查阅往期内容

57532010c7f9bd6f46c2607df5905491.jpeg

Python深度学习TensorFlow Keras心脏病预测神经网络模型评估损失曲线、混淆矩阵可视化

outside_default.png

左右滑动查看更多

outside_default.png

01

f17dc4d8df057408ad00acc4029b10d8.png

02

9a33e2a43484a1fcecf38631fb7e2c81.png

03

c12e119109d50129157a431cbe54d067.jpeg

04

db24a03eef05f45e1c4d2b0deee01a23.png

随机森林体重预测模型

首先,我将使用随机森林模型,将年龄(age)、性别(sex)、种族(race)、教育水平(education.code)、体育锻炼(exercise)、日常活动水平(active)作为特征变量,体重(wt71)作为目标变量,来构建体重变化预测模型。

接下来,我将对结果进行可视化。

  1. # 构建随机森林模型
  2. rf_model = RandomForestRegressor(random_state=0)
  3. rf_model.fit(X_train, y_train)
  4. mse, r2

27d4dc45ee2343cc8721928aebfc21b8.png

根据随机森林模型的分析,我们得到了以下结果:

  • 均方误差(Mean Squared Error, MSE) :约 259.78。

  • 决定系数(R-squared, R²) :约 -0.024。

从图中可以看出,预测的体重与真实体重之间的关系。理想情况下,所有点应该靠近黑色虚线,这表示预测值与真实值非常接近。

f94a774a04ac6d53b5aa02a4343f1b78.png

根据随机森林模型的特征重要性分析,我们得到了以下结果:

  • 年龄(age) :重要性最高,约为 0.423。

  • 性别(sex) :重要性为 0.185。

  • 种族(race) :重要性为 0.050。

  • 教育水平(education.code) :重要性为 0.140。

  • 体育锻炼(exercise) :重要性为 0.101。

  • 日常活动水平(active) :重要性为 0.102。

从这些结果中可以看出,年龄是影响体重变化的最重要因素,其次是性别和教育水平。这些信息对于医生在评估患者的体重变化风险时可能非常有用。

梯度提升树模型

a1b8f80c9d49ac3925756de7c8696828.png

根据梯度提升树模型的分析,我们得到了以下结果:

  • 均方误差(Mean Squared Error, MSE) :约 208.04。

  • 决定系数(R-squared, R²) :约 0.180。

从图中可以看出,预测的体重与真实体重之间的关系。理想情况下,所有点应该靠近黑色虚线,这表示预测值与真实值非常接近。

决策树

c6c2c477575e1ecb47364e39a762496d.png

根据决策树模型的分析,我们得到了以下结果:

  • 均方误差(Mean Squared Error, MSE) :约 345.14。

  • 决定系数(R-squared, R²) :约 -0.361。

从图中可以看出,预测的体重与真实体重之间的关系。理想情况下,所有点应该靠近黑色虚线,这表示预测值与真实值非常接近。

决策树模型的特征重要性如下:

  • 年龄(age) :重要性为 0.439。

  • 性别(sex) :重要性为 0.200。

  • 种族(race) :重要性为 0.045。

  • 教育水平(education.code) :重要性为 0.117。

  • 体育锻炼(exercise) :重要性为 0.106。

  • 日常活动水平(active) :重要性为 0.093。

1f550282efc188c3ed332ac42b1696ef.png

我已经将决策树模型进行了可视化。从图中可以看到,树的各个节点显示了用于分割数据的特征和阈值,以及每个叶子节点的预测结果。

对决策树模型进行剪枝,以提高其泛化能力。剪枝可以通过设置决策树的最大深度或最小样本分割来实现。我将尝试使用不同的剪枝参数来优化模型,并可视化剪枝后的决策树。

  1. # 使用网格搜索进行参数调优
  2. grid_search = GridSearchCV(DecisionTreeRegressor(random_state=0), param_grid, cv=5, scoring='neg_mean_squared_error')
  3. grid_search.fit(X_train, y_train)

c8fd4d5610f6d2c180344da36527f9c8.png

通过对决策树模型进行剪枝,我们得到了以下最佳参数:

  • 最大深度(max_depth) :10

  • 最小样本分割(min_samples_split) :10

  • 最小样本叶片(min_samples_leaf) :4

使用这些参数,我构建了剪枝后的决策树模型,并进行了可视化。从剪枝后的决策树中可以看出,树的复杂度有所降低,这有助于提高模型的泛化能力,减少过拟合的风险。

f713f8075045e0d3896ddb2e5d228c94.png

这是根据提供的数据构建的体重变化预测的决策树模型。该模型考虑了年龄、性别、种族、教育程度、锻炼习惯、活跃程度和体重等因素。

决策树的每个节点显示了用于分割数据的特征和阈值。叶子节点表示预测的体重变化值。

对决策树进行进一步的剪枝,并输出一些有价值的规则。这将涉及调整决策树的参数,如最大深度或最小样本分割数,以简化模型并提取关键规则。

以下是剪枝后的决策树模型中的一些关键规则:

  1. 如果年龄小于或等于56.5岁:

  • 预测的体重变化为-0.85磅

  • 预测的体重变化为2.66磅

  • 如果体重小于或等于122.07磅:

  • 如果体重大于122.07磅:

  • 预测的体重变化为4.26磅

  • 预测的体重变化为-9.00磅

  • 如果年龄小于或等于43.5岁:

  • 如果体重小于或等于88.79磅:

  • 如果体重大于88.79磅:

如果体重小于或等于92.36磅:

  • 预测的体重变化为-6.40磅

  • 预测的体重变化为0.14磅

  • 如果年龄小于或等于67.5岁:

  • 如果年龄大于67.5岁:

如果性别为女性(sex <= 0.5):

  • 预测的体重变化为-8.83磅

  • 预测的体重变化为-21.28磅

这些规则提供了基于年龄、性别和体重来预测体重变化的指导。

线性回归

数据集已成功加载。接下来,我将进行以下步骤来构建和分析线性回归模型:

  1. 数据预处理:包括处理缺失值、编码分类变量(如有必要)以及标准化数值变量。

  2. 构建神经网络模型:使用年龄(age)、性别(sex)、种族(race)、教育程度(education.code)、锻炼(exercise)、活跃度(active)和体重作为输入特征,体重变化作为目标变量。

  3. 训练模型:使用数据集的一部分进行训练。

  4. 评估模型:使用数据集的另一部分进行测试,并评估模型的性能。

  5. 可视化结果:展示模型的预测结果和实际值,以及误差分布。

现在,我将开始进行数据预处理。

数据预处理完成,我们有1252个样本用于训练和314个样本用于测试。每个样本有7个特征。

线性回归模型的训练和测试均方误差(MSE)分别为58.62和49.91。这提供了模型性能的一个初步指标。

接下来,我将进行结果的可视化,包括模型的预测结果和误差分布。

85ffdc90a6d2015cfe62f69a78a4cf8c.png

19ecbee40d936b4b88e47e027c83a570.png

分析结果

  1. 实际值 vs 预测值图:

  • 在“训练数据:实际值 vs 预测值”图中,点大致围绕黑色虚线(即y=x线)分布,表明模型的预测与实际值大致相符。

  • 在“测试数据:实际值 vs 预测值”图中,点也大致围绕黑色虚线分布,表明模型在未见过的数据上的表现也相对准确。

误差分布图:

  • 误差分布图显示了训练误差和测试误差的分布情况。

  • 训练误差和测试误差都呈现出近似正态分布的形态,这通常是一个好的迹象,表明模型没有系统性的偏差。

模型参数

由于我们使用的是线性回归模型,模型参数包括权重(coefficients)和截距(intercept)。下面列出了这些参数:

  • 权重(Coefficients) :这些值表示每个特征对目标变量(体重变化)的影响。

  • 截距(Intercept) :当所有特征值都为0时,模型预测的目标变量值。

让我们查看这些参数的具体值。

模型参数解释

  1. 权重(Coefficients) :

  • 年龄: -1.96 — 年龄每增加一岁,预测的体重变化减少约1.96单位。

  • 性别: -1.00 — 与女性相比,男性的预测体重变化减少约1.00单位。

  • 种族: 0.08 — 某些种族可能与体重变化的小幅增加相关。

  • 教育程度: 0.04 — 更高的教育程度可能与体重变化的小幅增加相关。

  • 锻炼: 0.27 — 更多的锻炼可能与体重变化的增加相关。

  • 活跃度: -0.30 — 更高的活跃度可能与体重变化的减少相关。

  • 体重: -1.34 — 更高的初始体重可能与体重变化的减少相关。

截距(Intercept) : 2.56 — 当所有特征值都为0时,模型预测的体重变化为2.56单位。

tensorflow神经网络

构建了一个简单的神经网络模型,并使用Adam优化器和mean_squared_error作为损失函数进行编译。然后,我们使用model.fit方法训练模型,并将训练过程中的历史记录存储在history对象中。

8a3217a3d6f70d9f5781de6a885c3333.png

在模型评估之后,我们使用matplotlib绘制了训练和验证损失随训练周期(epoch)变化的曲线图。这有助于我们理解模型在训练过程中的表现,以及是否存在过拟合或欠拟合的情况。

  1. # 评估模型
  2. loss = model.evaluate(X_test, y_test, verbose=0)
  3. print(f"Test Loss: {loss}")

d1800f668d5328d0c7f0e8c73293ea97.png

df1b815af22b4f650f3479e2007eb5e9.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

988b550888e6452fbef3e847137ffe14.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸烟与健康调查数据》。

点击标题查阅往期内容

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

96af41bba224e94765877f1bbfb43b8b.jpeg

e049284cac07ec4aa3cb27e7dd221cad.png

f65013c275e4f603e93d7ac8f9bc77fd.png

e0dd7fba692d41e2425b3fde366daa2d.jpeg

8366851b4710e3fb1069c230df1a103e.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/803165
推荐阅读
相关标签
  

闽ICP备14008679号