Pima-Indians糖尿病检测数据集和XGBoost预测模型

一、问题描述

Pima Indians Diabetes 数据集是一个广泛用于机器学习和数据挖掘领域的公开数据集,特别适用于二元分类问题。该数据集由国家糖尿病、消化和肾脏疾病研究所(NIDDK)提供,并包含了关于 Pima 印第安女性的医疗信息,首次发布于1990年左右,主要用于研究和预测糖尿病的发生。特别是,这里的所有患者都是至少21岁的皮马印第安女性后裔。

通过建立的人工智能机器学习预测模型,可实现以下一些研究问题: 1.模型能准确预测个人是否患有糖尿病。 2.模型能挖掘哪些风险因素最能预测糖尿病风险。 3.我们能使用风险因素的一个子集来准确预测一个人是否患有糖尿病。 4.我们可以使用筛选几个重要糖尿病致病特征,然后组合创建为一个简短的问题,以准确预测某人是否可能患有糖尿病或是否有糖尿病的高风险。

二、数据集内容

数据集由8个医学预测变量和一个目标变量“结果”组成。预测变量包括患者怀孕次数、体重指数(BMI)、胰岛素水平、年龄等。该数据集包含 768 个观测值,它不是一个均衡的数据集,并且假设若值缺失则被替换为 0。

数据结构

数据集中有 768 条记录和 8 个数值型特征变量(加目标变量共 9 列):

特征名称描述
Pregnancies怀孕次数
Glucose2 小时口服葡萄糖耐量试验中的血浆葡萄糖浓度(mg/dL)
BloodPressure舒张压(mm Hg)
SkinThickness三头肌皮褶厚度(mm)
Insulin2 小时血清胰岛素水平(mu U/mL)
BMI身体质量指数(体重/身高²,单位为 kg/m²)
DiabetesPedigreeFunction家族糖尿病遗传功能(遗传风险评分,反映家族遗传对糖尿病的影响)
Age年龄(岁)
Outcome目标变量,是否患糖尿病(1 表示患病,0 表示未患病)

数据样例

diabetes.csv

PregnanciesGlucoseBloodPressureSkinThicknessInsulinBMIDiabetesPedigreeFunctionAgeOutcome
61487235033.60.627501
1856629026.60.351310
8183640023.30.672321
18966239428.10.167210
0137403516843.12.288331
5116740025.60.201300
378503288310.248261
1011500035.30.134290
2197704554330.50.158531
8125960000.232541
4110920037.60.191300
101687400380.537341

数据集使用许可协议

CC0 1.0 Universal

Deed – CC0 1.0 Universal – Creative Commons

三、XGBoost预测建模样例

XGBoost(Extreme Gradient Boosting)是一种先进的机器学习开发包,主要用于提高机器学习和深度学习模型的性能和可靠性。它基于 Gradient Boosting Machine(GBM)/梯度提升机算法,并对其进行了优化和改进,以处理大规模数据集和高维特征空间。

XGBoost 的主要特点:

  1. 高效性:XGBoost 使用并行计算和近似算法,能够在短时间内处理大规模数据集。
  2. 准确性:XGBoost 采用了一系列优化技术,如正则化、权重衰减和提前停止等,以提高模型的准确性和泛化能力。
  3. 鲁棒性:XGBoost 对异常值和噪声数据具有较好的鲁棒性,能够有效处理缺失值。
  4. 灵活性:XGBoost 支持自定义损失函数和评估指标,适用于各种机器学习任务,如分类、回归、排序和推荐系统等。
  5. 可解释性:XGBoost 提供了特征重要性评估,帮助用户理解模型决策过程。
  6. 开源:XGBoost 是一个开源项目,拥有活跃的社区支持和丰富的文档资源。

xgboost版本信息

xgboost-2.1.1              |  py312haa95532_0          11 KB  anaconda

源码

classifier=xgboost.XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
       colsample_bytree=0.3, gamma=0.0, learning_rate=0.25,
       max_delta_step=0, max_depth=3, min_child_weight=7, missing=None,
       n_estimators=100, n_jobs=1, nthread=None,
       objective='binary:logistic', random_state=0, reg_alpha=0,
       reg_lambda=1, scale_pos_weight=1, seed=None, silent=True,
       subsample=1)

这段代码定义了一个 XGBoost 分类器(XGBClassifier)的实例,并设置了一系列超参数。下面是对这些超参数的解释:

基本参数:

  1. base_score:全局偏置项,用于初始化模型的预测值。默认值为 0.5。
  2. booster:使用的学习器。默认值为 ‘gbtree’,表示使用梯度提升树。还可以选择 ‘gblinear’(线性模型)或 ‘dart’(丢弃提升树)。
  3. objective:定义学习任务和相应的学习目标。对于分类任务,常用的有 ‘binary:logistic’(二分类逻辑回归)、’multi:softmax’(多分类)等。
  4. random_state:随机数生成器的种子,用于确保结果的可重复性。

树的参数:

  1. max_depth:树的最大深度。默认值为 3。
  2. min_child_weight:叶子节点所需的最小权重和。默认值为 7。
  3. gamma:用于控制树的分裂。默认值为 0.0。
  4. subsample:用于训练每棵树的样本比例。默认值为 1。
  5. colsample_bytree:用于训练每棵树的特征比例。默认值为 0.3。
  6. colsample_bylevel:用于训练每个级别的特征比例。默认值为 1。

学习参数:

  1. learning_rate:学习率,用于控制每一步的步长。默认值为 0.25。
  2. n_estimators:学习器的数量。默认值为 100。
  3. reg_alpha:L1 正则化项的权重。默认值为 0。
  4. reg_lambda:L2 正则化项的权重。默认值为 1。
  5. scale_pos_weight:用于平衡正负样本的权重。默认值为 1。

其他参数:

  1. missing:指定如何处理缺失值。默认值为 None。
  2. n_jobs:并行运行的作业数。默认值为 1。
  3. nthread:使用的线程数。默认值为 None。
  4. seed:随机数生成器的种子。默认值为 None。
  5. silent:是否输出日志信息。默认值为 True。

这些参数可以根据具体任务进行调整,以优化模型的性能。

源码开源协议

GPL3.0
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document.

四、获取案例套件

需要登录后才允许下载文件包。登录

发表评论