4. Python 中使用 XGBoost

一、概述

本文中的 Python 例子读取 pima-indians-diabetes.csv 文件
并将其切分成:用于模型训练的训练集、用于模型评测的测试集
我们使用训练集训练 XGBoost 模型
然后,使用测试集评测该模型的准确率、评测输入因素的重要程度


二、语料文件

语料文件使用 pima-indians-diabetes.csv 即 https://blog.csdn.net/jiangmengya1/article/details/87859874
该数据文件,描述了各因素对糖尿病致病的综合影响结果


三、模型训练和评测

1. 读取数据集

读取语料文件,并展示文件前三行,用于内容示意
> import xgboost
> import sklearn
> import numpy
> import warnings
> warnings.filterwarnings('ignore')
> dataset = numpy.loadtxt('pima-indians-diabetes.csv', delimiter=",")
> print(dataset[0:3])
代码运行如图所示 :

2. 分割数据集

将语料文件
分成输入向量集 X 、输出标记集 Y
将输入向量集 X 切分为:用于训练的输入向量集 X_Train 、用于测试的输入向量集 X_Test
将输出标记集 Y 切分为:同于训练的输出标记集 Y_Train、用于测试的输出标记集 Y_Test
> X = dataset[:,0:8]
> Y = dataset[:,8]
> print(X[0:3]) 
> print(Y[0:3])
> X_Train, X_Test, Y_Train, Y_Test = sklearn.model_selection.train_test_split(X, Y)
代码运行如图所示:

3. 模型训练与测试


使用用于训练的输入向量集 X_Train 、用于训练的输出标记集 Y_Train 进行模型训练
使用用于测试的输入向量集 X_Test、用于测试的输出标记集 Y_Test 进行模型预测
> Boost_Model = xgboost.XGBClassifier().fit(X_Train, Y_Train)
> Accuracy = sklearn.metrics.accuracy_score(Y_Test, Boost_Model.predict(X_Test))
> print("Accuracy: %.2f" % Accuracy)
代码运行如图所示:


我们发现准确率可以达到 75%

4. 因素重要程度评测
从数据集特征可以看出,8 个方面可能是糖尿病的致病因素
我们打印这 8 个方面对糖尿病致病的影响程度
> print("Feature Important: \n")
> print(Boost_Model.feature_importances_)
代码运行如图所示:
我们发现,第 6 个因素对糖尿病致病影响最大,影响度为 0.2369338 
查阅 pima-indians-disbetes.csv 
我们发现,第 6 个因素为 # 6. Body mass index (weight in kg/(height in m)^2)
即 BMI 指数
BMI 指数即体质指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准

猜你喜欢

转载自blog.csdn.net/jiangmengya1/article/details/87903862