python基于GBDT绘制混淆矩阵图像并在图上标注概率
时间: 2023-08-11 16:09:26 浏览: 133
首先,我们需要用 Python 中的 scikit-learn 库来训练 GBDT 模型,并使用测试数据集来生成混淆矩阵。接着,我们可以使用 matplotlib 库来绘制混淆矩阵图像并在图上标注概率。
下面是一个简单的代码示例:
```python
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import numpy as np
# 构建训练数据和标签
X_train = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
y_train = np.array([0,1,0,1])
# 构建测试数据和标签
X_test = np.array([[1,2,3],[1,5,6],[7,8,9],[10,11,12]])
y_test = np.array([0,0,1,1])
# 训练 GBDT 模型
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)
clf.fit(X_train, y_train)
# 预测测试数据
y_pred = clf.predict(X_test)
# 生成混淆矩阵
cm = confusion_matrix(y_test, y_pred)
# 绘制混淆矩阵图像并标注概率
fig, ax = plt.subplots()
im = ax.imshow(cm, cmap='Blues')
# 添加标注
for i in range(len(cm)):
for j in range(len(cm)):
ax.text(j, i, str(cm[i][j]), ha='center', va='center', color='white')
# 计算概率并标注
ax.text(j, i+0.25, str(round(cm[i][j]/np.sum(cm[i]),2)), ha='center', va='center', color='green')
# 添加标题、轴标签和刻度
ax.set_title('Confusion matrix')
ax.set_xlabel('Predicted')
ax.set_ylabel('True')
ax.set_xticks(np.arange(len(cm)))
ax.set_yticks(np.arange(len(cm)))
ax.set_xticklabels(['Negative', 'Positive'])
ax.set_yticklabels(['Negative', 'Positive'])
# 旋转 x 轴标签
plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")
# 显示图像
plt.show()
```
在这个示例代码中,我们使用了包括训练数据和测试数据在内的一些随机生成的数据。通过训练 GBDT 模型并使用测试数据生成混淆矩阵,我们可以使用 matplotlib 库来绘制混淆矩阵图像并标注概率。
阅读全文