分类算法评估-混淆矩阵、精确率和召回率以及F1_Score

分类算法评估-混淆矩阵、精确率和召回率

  1. 首先引入问题,为什么我们再评估分类算法的时候通常用精确率和召回率?

假设现在有1000个人。预测他们是否得了癌症。假设他们总共有900人是健康的,10人患癌症,那么在这种情况下我们如果将所有人都预测为健康的。
在这种情况下我们的准确率是: 99.0% 那我们的这个模型显然的不是一个好的模型。


所以就引出了精确率(precision)召回率(recall)
先来看一个混淆矩阵
混淆矩阵
这里的T就是True,F就是False,P就是Positive(阳性),N就是Negative(阴性)
TN代表的意思也就是:预测的是0 实际也是0
FP代表的意思也就是:预测的是1 实际是0
FN代表的意思也就是:预测的是0 实际是1
TP代表的意思也就是:预测的是1 实际上也是1

然后我们的求精准率的公式就有了 ↓↓↓
精准率公式:
精准率公式


召回率公式:召回率公式

文字表达就是**?*
精确率 = 判断为1实际为1 跟 所有预测为1的比例
召回率 = 判断为1实际为1 跟 所有实际为1的比例

这就是精确率和召回率了。其实在不同的情况下所注重的不同,在某些问题上注重精确率,在某些问题上注重召回率。

还有一个评估方法结合了精确率召回率,那就是F1_Score
F1_Score将精确率和召回率都兼顾了,也就是求了精确率和召回率的调和平均值。

F1_Score的公式为:
F1分数

					 原			创
要导入数据集,进行可视化分析,并建立分类模型预测乳腺肿瘤良恶性,可以遵循以下步骤: 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() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值