1. 在引入评估方法之前,先引入混淆矩阵 ? ? 混淆矩阵 ? ? ? ? ? ?|正例|假例| ? ? ? ? |正例| TP | FN | ? ? ? ? |假例| FP | TN | ? ? ? ? 解释一下混淆矩阵的内容: ? ? ? ? ? ? TP: 预测是正例的同时,真实值也是正例 ? ? ? ? ? ? FN: 预测是假例的同时,真实值是假例 ? ? ? ? ? ? FP: 预测是正例的同时,真实值是假例 ? ? ? ? ? ? TN: 预测是假例的同时,真实值也是假例 2. 精确率:在预测正例的样本中,真实值也是正例的比例 3. 召回率:在真实正例的样本中,预测值也是正例的比例(这里的意思就是预测正例的准确率,查的准不准) 4. F1-score = 2TP / (2TP + FN + FP) = 2 * 精确率 * 召回率 / (精确率 + 召回率) ? ? F1-score反映了模型的稳健性 5. sklearn的API ? ? sklearn.metrics.classification_reporta(y_true, y_pred, labels=[], traget_names=None) ? ? y_true:真实值 ? ? y_pred:预测值 ? ? labels:预测特征值类别 ? ? traget_names:预测特征名称
6.精确率和召回率使用的方向:
? ? ? ? 我们在分类的时候,更关注正例预测的准确程度的时候。比如说是在“癌症预测”、“次品预测”中更为重要。
# 对乳腺癌进行分类和评估
from sklearn.metrics import classification_report
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
import pandas as pd
import numpy as np
# 1)数据集获取
data = load_breast_cancer()
# 2)数据集分离
x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
# 3)特诊工程标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
# 4)逻辑回归流程
# 注意,这里可以采用网格搜索和交叉验证来进行出来,找到合适的estimator
estimator = LogisticRegression(solver='liblinear', penalty='l2', C=1.0)
estimator.fit(x_test, y_test)
estimator.coef_, estimator.intercept_
# 准确率
estimator.score(x_test, y_test)
# 5)精确率、召回率、F1-score
report = classification_report(y_test, estimator.predict(x_test), labels=[0, 1], target_names=['良性', '恶性'])
print(report)
输出结果:
precision recall f1-score support
良性 0.98 0.93 0.95 55
恶性 0.96 0.99 0.97 88
accuracy 0.97 143
macro avg 0.97 0.96 0.96 143
weighted avg 0.97 0.97 0.96 143
学习地址:
黑马程序员3天快速入门python机器学习_哔哩哔哩_bilibili
|