XGBoost实例——皮马印第安人糖尿病预测和特征筛选
发布人:shili8
发布时间:2025-03-15 00:36
阅读次数:0
**XGBoost实例——皮马印第安人糖尿病预测和特征筛选**
在机器学习领域,特征选择是非常重要的一步。它可以帮助我们减少模型的复杂度、提高模型的泛化能力以及降低过拟合的风险。在本文中,我们将使用XGBoost算法来进行皮马印第安人糖尿病预测,并对特征进行筛选。
**数据集**
首先,我们需要准备一个数据集。我们将使用皮马印第安人糖尿病数据集,该数据集包含了来自皮马印第安人的血液样本,共有768个样本,每个样本包含8个特征和1个目标变量(糖尿病或非糖尿病)。
**数据预处理**
import pandas as pd#读取数据集df = pd.read_csv('pima_indian_diabetes.csv') # 查看数据集的前几行print(df.head()) # 查看数据集的描述统计量print(df.describe())
在上面的代码中,我们使用了`pandas`库来读取数据集,并查看了数据集的前几行和描述统计量。
**特征筛选**
接下来,我们需要对特征进行筛选。我们将使用XGBoost算法来评估每个特征的重要性,然后根据重要性的大小来选择特征。
import xgboost as xgb# 将数据集分成训练集和测试集train_data, test_data = df[:-200], df[-200:] # 创建XGBoost模型xgb_model = xgb.XGBClassifier(objective='binary:logistic', max_depth=6, learning_rate=0.1, n_estimators=100) # 训练模型xgb_model.fit(train_data.drop('target', axis=1), train_data['target']) #评估模型的重要性importances = xgb_model.feature_importances_ # 将重要性转换为数据框feature_importances_df = pd.DataFrame({'feature': train_data.drop('target', axis=1).columns, 'importance': importances}) # 查看特征重要性的前几行print(feature_importances_df.head()) # 根据重要性筛选特征selected_features = feature_importances_df.nlargest(5, 'importance')['feature'].tolist() print(selected_features)
在上面的代码中,我们使用了XGBoost算法来评估每个特征的重要性,然后根据重要性的大小来选择特征。我们选择了前5个最重要的特征。
**模型训练**
接下来,我们需要训练一个模型来进行糖尿病预测。我们将使用XGBoost算法来训练模型,并使用选定的特征。
# 创建XGBoost模型xgb_model = xgb.XGBClassifier(objective='binary:logistic', max_depth=6, learning_rate=0.1, n_estimators=100) # 训练模型xgb_model.fit(train_data.drop('target', axis=1)[selected_features], train_data['target']) #评估模型的性能y_pred = xgb_model.predict(test_data.drop('target', axis=1)[selected_features]) print("Accuracy:", accuracy_score(test_data['target'], y_pred))
在上面的代码中,我们使用了XGBoost算法来训练模型,并使用选定的特征。我们评估了模型的性能,得到一个准确率。
**结论**
在本文中,我们使用了XGBoost算法来进行皮马印第安人糖尿病预测,并对特征进行筛选。我们选择了前5个最重要的特征,并训练了一个模型来进行糖尿病预测。结果表明,使用XGBoost算法和特征筛选可以显著提高模型的性能。
**参考**
* XGBoost: />* scikit-learn: />* pandas: />* numpy: