用Python计算一个7*8的混淆矩阵的精确度、召回率、F1 score
时间: 2024-06-05 07:06:19 浏览: 118
假设混淆矩阵如下:
| | 预测为正类 | 预测为负类 |
|---------|------------|------------|
| 真实为正类 | 5 | 2 |
| 真实为负类 | 1 | 40 |
首先,我们需要计算出TP、FP、FN、TN:
- TP(True Positive):真实为正类,预测为正类,即5。
- FP(False Positive):真实为负类,预测为正类,即2。
- FN(False Negative):真实为正类,预测为负类,即1。
- TN(True Negative):真实为负类,预测为负类,即40。
然后,我们可以计算精确度、召回率、F1 score:
- 精确度(Precision):TP / (TP + FP) = 5 / (5 + 2) = 0.714。
- 召回率(Recall):TP / (TP + FN) = 5 / (5 + 1) = 0.833。
- F1 score:2 * Precision * Recall / (Precision + Recall) = 2 * 0.714 * 0.833 / (0.714 + 0.833) = 0.769。
相关问题
输出模型AUC、准确度、精确度、召回率、F1-score等参数以及ROC曲线、混淆矩阵等图形的代码
在Python中,特别是在机器学习库如scikit-learn中,评估模型性能通常涉及以下几个步骤:
1. **计算AUC (Area Under the Curve)**:
```python
from sklearn.metrics import roc_auc_score
y_true = ... # 真实标签
y_pred_proba = ... # 预测概率
auc = roc_auc_score(y_true, y_pred_proba)
```
2. **准确度 (Accuracy)**:
```python
accuracy = accuracy_score(y_true, y_pred) # y_pred 是预测的类别
```
3. **精确度 (Precision)**:
```python
precision = precision_score(y_true, y_pred)
```
4. **召回率 (Recall, Sensitivity or True Positive Rate)**:
```python
recall = recall_score(y_true, y_pred)
```
5. **F1-score**:
```python
f1 = f1_score(y_true, y_pred)
```
6. **绘制ROC曲线 (Receiver Operating Characteristic curve)**:
```python
import matplotlib.pyplot as plt
from sklearn.metrics import plot_roc_curve
plot_roc_curve(model, X_test, y_test)
plt.show()
```
7. **混淆矩阵 (Confusion Matrix)**:
```python
conf_mat = confusion_matrix(y_true, y_pred)
print(conf_mat)
```
以上代码假设`y_true`是实际标签列表,`y_pred`是预测结果,而`model`是你训练好的分类模型,`X_test`和`y_test`是测试集数据。
导入数据集,进行可视化分析,建立分类模型预测乳腺肿瘤良恶性。 要求:输出模型AUC、准确度、精确度、召回率、F1-score等参数以及ROC曲线、混淆矩阵等图形。
要导入数据集,进行可视化分析,并建立分类模型预测乳腺肿瘤良恶性,可以遵循以下步骤:
1. 数据导入:
首先,需要导入相关的数据集。假设数据集已存储为CSV文件,可以使用Python的`pandas`库读取数据。
```python
import pandas as pd
data = pd.read_csv('path_to_your_data.csv')
```
2. 数据预处理:
清洗数据,处理缺失值,对特征进行编码,对数据进行标准化或归一化等。还需要将数据集分为训练集和测试集。
```python
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X = data.drop('label', axis=1) # 假设'label'是目标列
y = data['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
```
3. 可视化分析:
使用`matplotlib`或`seaborn`库进行数据可视化,比如使用箱型图查看数据分布,使用热图查看特征相关性等。
```python
import seaborn as sns
import matplotlib.pyplot as plt
# 绘制特征相关性热图
plt.figure(figsize=(10, 8))
sns.heatmap(X_train.corr(), annot=True, fmt=".2f")
plt.show()
```
4. 建立分类模型:
选择合适的机器学习算法,例如逻辑回归、随机森林、支持向量机等,建立模型进行训练。
```python
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
```
5. 模型评估:
使用测试集评估模型性能。计算AUC、准确度、精确度、召回率、F1-score等参数,并绘制ROC曲线和混淆矩阵。
```python
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, roc_curve, confusion_matrix
import matplotlib.pyplot as plt
# 预测和评估
predictions = model.predict(X_test)
predictions_proba = model.predict_proba(X_test)[:,1]
# 计算参数
print("AUC:", roc_auc_score(y_test, predictions_proba))
print("准确度:", accuracy_score(y_test, predictions))
print("精确度:", precision_score(y_test, predictions))
print("召回率:", recall_score(y_test, predictions))
print("F1-score:", f1_score(y_test, predictions))
# 绘制ROC曲线
fpr, tpr, thresholds = roc_curve(y_test, predictions_proba)
plt.figure()
plt.plot(fpr, tpr, label='ROC Curve (area = %0.2f)' % roc_auc_score(y_test, predictions_proba))
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')
plt.legend(loc="lower right")
plt.show()
# 绘制混淆矩阵
cm = confusion_matrix(y_test, predictions)
sns.heatmap(cm, annot=True, fmt="d")
plt.show()
```
阅读全文