xgb多分类问题python
时间: 2023-07-28 16:21:54 浏览: 91
xgboost 是一种非常流行的机器学习算法,它可以用于解决多分类问题。下面是一个使用 xgboost 解决多分类问题的示例代码:
```python
import xgboost as xgb
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义参数
params = {
'objective': 'multi:softmax',
'num_class': 3,
'max_depth': 3,
'eta': 0.1,
'subsample': 0.7,
'colsample_bytree': 0.7,
'seed': 42
}
# 转化数据集格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
# 训练模型
num_rounds = 100
model = xgb.train(params, dtrain, num_rounds)
# 在测试集上进行预测
preds = model.predict(dtest)
# 计算准确率
accuracy = np.sum(preds == y_test) / len(y_test)
print('准确率:', accuracy)
```
这里使用了 iris 数据集作为示例,其中 `params` 定义了模型的参数,`objective` 指定了损失函数,`num_class` 指定了类别数,`max_depth` 指定了树的最大深度,`eta` 指定了学习率等。然后将数据集转化为 `DMatrix` 格式,使用 `xgb.train` 训练模型,最后在测试集上进行预测并计算准确率。
阅读全文