基于鸢尾花数据集,计算并绘制 LR 及 SVM 模型的 P-R 曲线及 ROC 曲线
时间: 2023-05-14 21:05:50 浏览: 330
利用鸢尾花数据集画出P-R曲线.py
好的,这是一个机器学习的问题,我可以回答。首先,我们需要加载鸢尾花数据集,并将其分为训练集和测试集。然后,我们可以使用逻辑回归(LR)和支持向量机(SVM)算法来训练模型,并计算它们的 P-R 曲线和 ROC 曲线。最后,我们可以使用 matplotlib 库绘制这些曲线。以下是 Python 代码示例:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.metrics import precision_recall_curve, roc_curve, auc
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
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.3, random_state=42)
# 训练逻辑回归模型
lr = LogisticRegression()
lr.fit(X_train, y_train)
# 计算逻辑回归模型的 P-R 曲线
lr_probs = lr.predict_proba(X_test)[:, 1]
lr_precision, lr_recall, _ = precision_recall_curve(y_test, lr_probs)
lr_auc = auc(lr_recall, lr_precision)
# 计算逻辑回归模型的 ROC 曲线
lr_fpr, lr_tpr, _ = roc_curve(y_test, lr_probs)
lr_roc_auc = auc(lr_fpr, lr_tpr)
# 训练支持向量机模型
svm = SVC(probability=True)
svm.fit(X_train, y_train)
# 计算支持向量机模型的 P-R 曲线
svm_probs = svm.predict_proba(X_test)[:, 1]
svm_precision, svm_recall, _ = precision_recall_curve(y_test, svm_probs)
svm_auc = auc(svm_recall, svm_precision)
# 计算支持向量机模型的 ROC 曲线
svm_fpr, svm_tpr, _ = roc_curve(y_test, svm_probs)
svm_roc_auc = auc(svm_fpr, svm_tpr)
# 绘制 P-R 曲线
plt.plot(lr_recall, lr_precision, label='LR (AUC = %0.2f)' % lr_auc)
plt.plot(svm_recall, svm_precision, label='SVM (AUC = %0.2f)' % svm_auc)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.legend()
# 绘制 ROC 曲线
plt.figure()
plt.plot(lr_fpr, lr_tpr, label='LR (AUC = %0.2f)' % lr_roc_auc)
plt.plot(svm_fpr, svm_tpr, label='SVM (AUC = %0.2f)' % svm_roc_auc)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend()
plt.show()
```
希望这个回答能够帮助你!
阅读全文