python举例详细展示逻辑回归二分类的做法,以及画出分类模型ROC曲线图和P-R曲线图
时间: 2024-03-22 19:39:54 浏览: 64
python实现二分类和多分类的ROC曲线教程
5星 · 资源好评率100%
好的,我可以给您详细介绍如何使用Python进行逻辑回归二分类的建模以及如何画出分类模型的ROC曲线图和P-R曲线图。
首先,我们需要导入必要的库。在这里,我们将使用`pandas`库读取数据,`sklearn`库进行建模和绘图,`matplotlib`库进行图形化展示。以下是导入所需库的代码:
``` python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, precision_recall_curve, auc
import matplotlib.pyplot as plt
```
然后,我们需要加载数据集。在这里,我们将使用`pandas`库的`read_csv()`函数加载数据集。以下是加载数据集的代码:
``` python
data = pd.read_csv('data.csv')
```
接下来,我们需要将数据集分为训练集和测试集。在这里,我们将使用`train_test_split()`函数将数据集随机分为训练集和测试集。以下是将数据集分割为训练集和测试集的代码:
``` python
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
然后,我们需要使用`LogisticRegression()`函数进行模型拟合。在这里,我们将使用默认参数。以下是使用`LogisticRegression()`函数进行模型拟合的代码:
``` python
classifier = LogisticRegression()
classifier.fit(X_train, y_train)
```
接下来,我们可以使用`predict()`函数预测测试集中的结果,并使用`predict_proba()`函数获取每个样本属于正类的概率。以下是预测测试集结果和获取每个样本属于正类的概率的代码:
``` python
y_pred = classifier.predict(X_test)
y_prob = classifier.predict_proba(X_test)[:, 1]
```
然后,我们可以使用`roc_curve()`函数和`precision_recall_curve()`函数计算ROC曲线和P-R曲线上的点,以及计算ROC曲线和P-R曲线下面积(AUC)。以下是计算ROC曲线和P-R曲线上的点以及计算ROC曲线和P-R曲线下面积的代码:
``` python
fpr, tpr, thresholds = roc_curve(y_test, y_prob)
precision, recall, thresholds = precision_recall_curve(y_test, y_prob)
roc_auc = auc(fpr, tpr)
pr_auc = auc(recall, precision)
```
最后,我们可以使用`matplotlib`库绘制ROC曲线和P-R曲线。以下是绘制ROC曲线和P-R曲线的代码:
``` python
# 绘制ROC曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
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')
plt.legend(loc="lower right")
plt.show()
# 绘制P-R曲线
plt.figure()
plt.plot(recall, precision, color='purple', label='P-R curve (area = %0.2f)' % pr_auc)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall curve')
plt.legend(loc="lower right")
plt.show()
```
这样就完成了逻辑回归二分类的建模和ROC曲线和P-R曲线的绘制。
阅读全文