计算AUC指标的代码
时间: 2024-10-21 13:10:38 浏览: 27
在Python中,使用scikit-learn库计算AUC(Area Under the Curve)指标通常是在二分类模型评估阶段完成的。以下是一个基本的例子,假设你已经有了模型的预测概率(`y_scores`)和实际标签(`y_true`):
```python
from sklearn import metrics
import numpy as np
# 假设 `y_scores` 是模型返回的概率预测,格式为 (n_samples, 2)
# 其中第一列对应负类,第二列对应正类
# `y_true` 是真实标签,格式为 (n_samples,)
y_scores = ... # 模型预测概率
y_true = ... # 真实的二分类标签(0或1)
# 对于概率预测,通常会先排序,从低到高
y_pred = np.argmax(y_scores, axis=1)
# 计算AUC分数
auc = metrics.roc_auc_score(y_true, y_scores[:, 1])
print(f"模型的AUC值为: {auc:.4f}")
```
这里的`y_scores[:, 1]`表示选取正类的概率值,因为二分类问题通常把概率较大的那一类视为正类。如果你的标签是0和1而不是最有可能的结果,你需要调整`y_pred`的计算方式。
相关问题
对pandas读取的数据进行逻辑回归评价预测,包括绘制二分类混淆矩阵、计算精确率与召回率、F1-score、ROC曲线与AUC指标代码
好的,以下是一份基于Pandas和Scikit-learn库的逻辑回归预测模型评价代码示例,包括绘制二分类混淆矩阵、计算精确率与召回率、F1-score、ROC曲线与AUC指标:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score, roc_curve, roc_auc_score
# 1. 数据读取与处理
data = pd.read_csv('data.csv')
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 2. 模型训练
model = LogisticRegression()
model.fit(X_train, y_train)
# 3. 模型预测
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)[:, 1]
# 4. 绘制二分类混淆矩阵
confusion_mat = confusion_matrix(y_test, y_pred)
plt.imshow(confusion_mat, cmap=plt.cm.Blues)
plt.title('Confusion Matrix')
plt.colorbar()
tick_marks = np.arange(2)
plt.xticks(tick_marks, ['0', '1'])
plt.yticks(tick_marks, ['0', '1'])
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
for i in range(2):
for j in range(2):
plt.text(j, i, confusion_mat[i, j], ha='center', va='center', color='white' if confusion_mat[i, j] > confusion_mat.max() / 2 else 'black')
plt.show()
# 5. 计算精确率、召回率和F1-score
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
# 6. 计算AUC指标和绘制ROC曲线
auc = roc_auc_score(y_test, y_prob)
fpr, tpr, thresholds = roc_curve(y_test, y_prob)
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % auc)
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('ROC Curve')
plt.legend(loc="lower right")
plt.show()
# 7. 输出结果
print('Precision:', precision)
print('Recall:', recall)
print('F1-score:', f1)
print('AUC:', auc)
```
这份代码使用了Pandas库读取了名为"data.csv"的数据集,并将其分成训练集和测试集,使用Scikit-learn库中的LogisticRegression类进行模型训练和预测,最后通过Scikit-learn库中的指标函数计算了预测结果的精确率、召回率、F1-score和AUC指标,同时绘制了二分类混淆矩阵和ROC曲线。需要注意的是,上述代码仅作为示例,具体实现需要根据实际情况进行调整。
对pandas读取的数据进行逻辑回归评价预测,包括精确率与召回率、F1-score、ROC曲线与AUC指标代码
好的,针对您的问题,以下是一份逻辑回归预测模型的代码示例:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, roc_curve
import matplotlib.pyplot as plt
# 1. 数据读取与处理
data = pd.read_csv('data.csv')
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 2. 模型训练
model = LogisticRegression()
model.fit(X_train, y_train)
# 3. 模型预测
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)[:, 1]
# 4. 模型评价
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
auc = roc_auc_score(y_test, y_prob)
# 5. ROC曲线绘制
fpr, tpr, thresholds = roc_curve(y_test, y_prob)
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % auc)
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('ROC Curve')
plt.legend(loc="lower right")
plt.show()
# 6. 输出结果
print('Accuracy:', accuracy)
print('Precision:', precision)
print('Recall:', recall)
print('F1-score:', f1)
print('AUC:', auc)
```
这份代码使用了Pandas库读取了名为"data.csv"的数据集,并将其分成训练集和测试集,使用Scikit-learn库中的LogisticRegression类进行模型训练和预测,最后通过Scikit-learn库中的指标函数计算了预测结果的准确率、精确率、召回率、F1-score和AUC指标,同时绘制了ROC曲线。
需要注意的是,上述代码仅作为示例,具体实现需要根据实际情况进行调整。
阅读全文