一、问题描述
Pima Indians Diabetes 数据集是一个广泛用于机器学习和数据挖掘领域的公开数据集,特别适用于二元分类问题。该数据集由国家糖尿病、消化和肾脏疾病研究所(NIDDK)提供,并包含了关于 Pima 印第安女性的医疗信息,首次发布于1990年左右,主要用于研究和预测糖尿病的发生。特别是,这里的所有患者都是至少21岁的皮马印第安女性后裔。
通过建立的人工智能机器学习预测模型,可实现以下一些研究问题: 1.模型能准确预测个人是否患有糖尿病。 2.模型能挖掘哪些风险因素最能预测糖尿病风险。 3.我们能使用风险因素的一个子集来准确预测一个人是否患有糖尿病。 4.我们可以使用筛选几个重要糖尿病致病特征,然后组合创建为一个简短的问题,以准确预测某人是否可能患有糖尿病或是否有糖尿病的高风险。
二、数据集内容
数据集由8个医学预测变量和一个目标变量“结果”组成。预测变量包括患者怀孕次数、体重指数(BMI)、胰岛素水平、年龄等。该数据集包含 768 个观测值,它不是一个均衡的数据集,并且假设若值缺失则被替换为 0。
数据结构
数据集中有 768 条记录和 8 个数值型特征变量(加目标变量共 9 列):
特征名称 | 描述 |
---|---|
Pregnancies | 怀孕次数 |
Glucose | 2 小时口服葡萄糖耐量试验中的血浆葡萄糖浓度(mg/dL) |
BloodPressure | 舒张压(mm Hg) |
SkinThickness | 三头肌皮褶厚度(mm) |
Insulin | 2 小时血清胰岛素水平(mu U/mL) |
BMI | 身体质量指数(体重/身高²,单位为 kg/m²) |
DiabetesPedigreeFunction | 家族糖尿病遗传功能(遗传风险评分,反映家族遗传对糖尿病的影响) |
Age | 年龄(岁) |
Outcome | 目标变量,是否患糖尿病(1 表示患病,0 表示未患病) |
数据样例
diabetes.csv
Pregnancies | Glucose | BloodPressure | SkinThickness | Insulin | BMI | DiabetesPedigreeFunction | Age | Outcome |
---|---|---|---|---|---|---|---|---|
6 | 148 | 72 | 35 | 0 | 33.6 | 0.627 | 50 | 1 |
1 | 85 | 66 | 29 | 0 | 26.6 | 0.351 | 31 | 0 |
8 | 183 | 64 | 0 | 0 | 23.3 | 0.672 | 32 | 1 |
1 | 89 | 66 | 23 | 94 | 28.1 | 0.167 | 21 | 0 |
0 | 137 | 40 | 35 | 168 | 43.1 | 2.288 | 33 | 1 |
5 | 116 | 74 | 0 | 0 | 25.6 | 0.201 | 30 | 0 |
3 | 78 | 50 | 32 | 88 | 31 | 0.248 | 26 | 1 |
10 | 115 | 0 | 0 | 0 | 35.3 | 0.134 | 29 | 0 |
2 | 197 | 70 | 45 | 543 | 30.5 | 0.158 | 53 | 1 |
8 | 125 | 96 | 0 | 0 | 0 | 0.232 | 54 | 1 |
4 | 110 | 92 | 0 | 0 | 37.6 | 0.191 | 30 | 0 |
10 | 168 | 74 | 0 | 0 | 38 | 0.537 | 34 | 1 |
数据集使用许可协议
CC0 1.0 Universal
Deed – CC0 1.0 Universal – Creative Commons
三、XGBoost预测建模样例
XGBoost(Extreme Gradient Boosting)是一种先进的机器学习开发包,主要用于提高机器学习和深度学习模型的性能和可靠性。它基于 Gradient Boosting Machine(GBM)/梯度提升机算法,并对其进行了优化和改进,以处理大规模数据集和高维特征空间。
XGBoost 的主要特点:
- 高效性:XGBoost 使用并行计算和近似算法,能够在短时间内处理大规模数据集。
- 准确性:XGBoost 采用了一系列优化技术,如正则化、权重衰减和提前停止等,以提高模型的准确性和泛化能力。
- 鲁棒性:XGBoost 对异常值和噪声数据具有较好的鲁棒性,能够有效处理缺失值。
- 灵活性:XGBoost 支持自定义损失函数和评估指标,适用于各种机器学习任务,如分类、回归、排序和推荐系统等。
- 可解释性:XGBoost 提供了特征重要性评估,帮助用户理解模型决策过程。
- 开源: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)的实例,并设置了一系列超参数。下面是对这些超参数的解释:
基本参数:
- base_score:全局偏置项,用于初始化模型的预测值。默认值为 0.5。
- booster:使用的学习器。默认值为 ‘gbtree’,表示使用梯度提升树。还可以选择 ‘gblinear’(线性模型)或 ‘dart’(丢弃提升树)。
- objective:定义学习任务和相应的学习目标。对于分类任务,常用的有 ‘binary:logistic’(二分类逻辑回归)、’multi:softmax’(多分类)等。
- random_state:随机数生成器的种子,用于确保结果的可重复性。
树的参数:
- max_depth:树的最大深度。默认值为 3。
- min_child_weight:叶子节点所需的最小权重和。默认值为 7。
- gamma:用于控制树的分裂。默认值为 0.0。
- subsample:用于训练每棵树的样本比例。默认值为 1。
- colsample_bytree:用于训练每棵树的特征比例。默认值为 0.3。
- colsample_bylevel:用于训练每个级别的特征比例。默认值为 1。
学习参数:
- learning_rate:学习率,用于控制每一步的步长。默认值为 0.25。
- n_estimators:学习器的数量。默认值为 100。
- reg_alpha:L1 正则化项的权重。默认值为 0。
- reg_lambda:L2 正则化项的权重。默认值为 1。
- scale_pos_weight:用于平衡正负样本的权重。默认值为 1。
其他参数:
- missing:指定如何处理缺失值。默认值为 None。
- n_jobs:并行运行的作业数。默认值为 1。
- nthread:使用的线程数。默认值为 None。
- seed:随机数生成器的种子。默认值为 None。
- 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.