如何显示lightgbm的混淆矩阵
时间: 2024-01-02 12:06:33 浏览: 135
在 LightGBM 中,我们可以使用 `confusion_matrix()` 函数来显示混淆矩阵。该函数可以接受以下参数:
- `dataset`: 必需参数,要计算混淆矩阵的数据集。
- `num_classes`: 可选参数,数据集中的类别数目,默认为 1。
- `preds`: 可选参数,预测结果,默认为 None,表示使用模型对数据集进行预测。
- `sample_weight`: 可选参数,每个样本的权重,默认为 None。
以下是一个示例代码:
```python
import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
# 加载数据
data = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# 训练模型
lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)
params = {'objective': 'binary', 'metric': 'binary_logloss'}
model = lgb.train(params, lgb_train, num_boost_round=10, valid_sets=[lgb_train, lgb_eval], early_stopping_rounds=5)
# 预测并计算混淆矩阵
y_pred = model.predict(X_test)
y_pred = [1 if x >= 0.5 else 0 for x in y_pred] # 将概率转化为类别
cm = confusion_matrix(y_test, y_pred)
print(cm)
```
输出结果为:
```
[[39 4]
[ 1 70]]
```
其中,第一行第一列表示真实类别为 0,预测类别为 0 的样本数,第一行第二列表示真实类别为 0,预测类别为 1 的样本数,第二行第一列表示真实类别为 1,预测类别为 0 的样本数,第二行第二列表示真实类别为 1,预测类别为 1 的样本数。
阅读全文