能不能给出相关代码,包括可视化方面,还有混淆矩阵,roc和auc
时间: 2024-12-15 08:22:12 浏览: 11
当然可以,这里是一个简化的例子,我们将使用Python的`sklearn`库,结合`matplotlib`进行数据可视化,`scikit-learn.metrics`库来生成混淆矩阵、ROC曲线以及AUC值。假设我们已经有了一个预训练的分类模型(例如SVM或者随机森林)和测试数据:
```python
# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix, roc_curve, auc
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 数据分割和预处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 训练模型
model = SVC(probability=True)
model.fit(X_train, y_train)
# 预测并计算混淆矩阵
y_pred = model.predict(X_test)
conf_mat = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", conf_mat)
# ROC曲线和AUC
y_scores = model.predict_proba(X_test)[:, 1] # 获取正类的概率预测
fpr, tpr, _ = roc_curve(y_test, y_scores)
roc_auc = auc(fpr, tpr)
plt.figure()
plt.plot(fpr, tpr, label=f"ROC curve (area = {roc_auc:.2f})")
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC)')
plt.legend(loc="lower right")
plt.show()
```
在这个例子中,我们首先创建了一个SVM分类器,并用训练数据拟合它。然后,对测试数据进行预测,得到分类结果和对应的概率得分。接着,利用这些得分计算混淆矩阵、绘制ROC曲线,并计算其面积(AUC)。
阅读全文