xgboost-rfecv
时间: 2023-06-30 21:21:40 浏览: 169
XGBoost是一种基于决策树的集成学习算法,RFECV(Recursive Feature Elimination with Cross-Validation)是一种特征选择的方法,可以结合起来使用来提高模型的性能和可解释性。
RFECV是一种迭代的特征选择方法,它通过重复训练模型并排除某些特征来选择最优的特征集。在每次迭代中,RFECV通过交叉验证评估模型的性能,并选择最优的特征集。这个过程会一直重复,直到达到指定数量的特征或性能无法再提高为止。
下面是一个使用XGBoost和RFECV进行特征选择的示例:
```python
import numpy as np
import pandas as pd
from xgboost import XGBClassifier
from sklearn.feature_selection import RFECV
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
# 加载数据集
data = load_breast_cancer()
X, y = data.data, data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# 创建XGBoost模型
model = XGBClassifier()
# 使用RFECV进行特征选择
rfecv = RFECV(estimator=model, step=1, cv=5, scoring='accuracy')
rfecv.fit(X_train, y_train)
# 输出最优特征集
print("Optimal number of features : %d" % rfecv.n_features_)
print("Optimal features : %s" % data.feature_names[rfecv.support_])
# 训练模型并输出测试集上的准确率
model.fit(X_train[:, rfecv.support_], y_train)
y_pred = model.predict(X_test[:, rfecv.support_])
accuracy = np.mean(y_pred == y_test)
print("Accuracy : %.2f%%" % (accuracy * 100.0))
```
在这个示例中,我们使用XGBoost和RFECV来选择最优的特征集,然后训练XGBoost模型并在测试集上进行预测。您可以根据自己的需求修改模型和特征选择的超参数。
阅读全文