python构建混淆矩阵
时间: 2023-11-08 22:06:04 浏览: 71
在Python中,可以使用sklearn.metrics模块中的confusion_matrix函数来构建混淆矩阵。该函数需要两个参数:真实标签和预测标签。下面是一个示例代码:
```python
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 0, 1, 1, 0]
y_pred = [1, 1, 0, 1, 0, 0]
cm = confusion_matrix(y_true, y_pred)
print(cm)
```
输出结果为:
```
array([[2, 1],
[1, 2]])
```
其中,第一行第一列的2表示真实标签为0且预测标签也为0的样本数;第一行第二列的1表示真实标签为0但预测标签为1的样本数;第二行第一列的1表示真实标签为1但预测标签为0的样本数;第二行第二列的2表示真实标签为1且预测标签也为1的样本数。
相关问题
python随机森林回归输出混淆矩阵和误判率
随机森林回归是一种集成学习算法,用于解决回归问题。它由多个决策树组成,每个决策树都是基于随机选择的特征子集进行训练。当使用随机森林回归进行预测时,每个决策树都会给出一个预测结果,最后通过取平均值或者投票的方式得到最终的预测结果。
混淆矩阵是用于评估分类模型性能的一种常用工具。对于回归问题,我们可以将预测值和真实值进行离散化处理,然后构建混淆矩阵。混淆矩阵的行表示真实值的类别,列表示预测值的类别。每个元素表示在真实值为某一类别、预测值为另一类别的样本数量。通过分析混淆矩阵,我们可以得到模型在各个类别上的预测准确度和误判率等信息。
误判率是指模型在预测过程中错误分类的样本比例。对于回归问题,我们可以将预测值和真实值进行离散化处理,然后计算模型在错误分类样本上的比例,即为误判率。
python基于GBDT绘制混淆矩阵图像并在图上标注概率
首先,我们需要用 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 库来绘制混淆矩阵图像并标注概率。
阅读全文