织梦网站地图调用全站文章,陕西建设厅执业注册中心网站,东莞seo建站优化费用,东营网站关键词优化1.分类模型评价指标在模型评估中#xff0c;有多个标准用于衡量模型的性能#xff0c;这些标准包括准确率#xff08;Accuracy#xff09;、精确率#xff08;Precision#xff09;、召回率#xff08;Recall#xff09;、F1 分数#xff08;F1-Score#xff09;等。…1.分类模型评价指标在模型评估中有多个标准用于衡量模型的性能这些标准包括准确率Accuracy、精确率Precision、召回率Recall、F1 分数F1-Score等。P positiveN Negative真正例TP 模型正确预测为正类的样本数量。
它真实标签是什么预测值就是什么这就是TP
真负例TN 模型正确预测为负类的样本数量。
真实标签和预测标签不一样
假正例FP 模型错误预测为正类的样本数量。
比如预测标签是0真实标签不是0那么就是一个FP0
假负例FN 模型错误预测为负类的样本数量。
FN 该类别真实样本数 - 正确预测数TP比如真实标签0有3个 预测里面正确预测到了俩个 那么FN 11. 理解数据真实标签y_true [2, 0, 2, 2, 0, 1]预测标签y_pred [0, 0, 2, 2, 0, 2]2. 构建混淆矩阵首先计算混淆矩阵按类别0、1、2排列真实\预测012020010012102类别0真实为0的样本索引1和4预测结果两个都被正确预测为0 → TP2其他类别预测为0的样本真实为2的样本索引0被预测为0 → FP1Precision₀ TP / (TP FP) 2 / (2 1) 2/3类别1真实为1的样本索引5预测结果真实为1被预测为2 → TP0其他类别预测为1的样本无 → FP0Precision₁ 0 / (0 0) 0sklearn将分母为0时定义为0类别2真实为2的样本索引0、2、3预测结果索引2和3正确预测为2 → TP2其他类别预测为2的样本真实为1索引5被预测为2 → FP1Precision₂ 2 / (2 1) 2/3计算每个类别的FNFN是行方向的误差真实类别被漏判的数量。对每个类别text
FN 该类别真实样本数 - 正确预测数TP1. 类别 0真实样本数2个索引1和4正确预测数TP2个都被预测为0FN₀ 2 - 2 02. 类别 1真实样本数1个索引5正确预测数TP0个未被预测为1FN₁ 1 - 0 1真实为1的样本被错误预测为23. 类别 2真实样本数3个索引0、2、3正确预测数TP2个索引2和3被正确预测为2FN₂ 3 - 2 1真实为2的样本被错误预测为0
2.准确率准确率Accuracy准确率是最直观的评估指标它表示模型预测正确的样本占总样本的比例。计算公式为
from sklearn.metrics import confusion_matrix,accuracy_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假设我们有以下真实标签和预测结果
y_true np.array([2, 0, 2, 2, 0, 1])
y_pred np.array([0, 0, 2, 2, 0, 2])# 计算准确率
accuracy accuracy_score(y_true, y_pred)
print(准确率, accuracy) 3.精确率Precision精确率衡量模型预测为正类的实例中实际为正类的比例。计算公式为 对应多分类问题采样宏平均精确率是每个类别的精确率的平均值不考虑每个类别的样本数量。计算公式如下
from sklearn.metrics import confusion_matrix,accuracy_score,precision_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假设我们有以下真实标签和预测结果
y_true np.array([2, 0, 2, 2, 0, 1])
y_pred np.array([0, 0, 2, 2, 0, 2])# 计算精确率
precision precision_score(y_true, y_pred, averagemacro)
print(精确率, precision)4.召回率Recall召回率衡量所有实际为正类的样本中模型预测为正类的比例。计算公式为召回率关注的是模型捕捉正类样本的能力。在某些领域如医疗诊断召回率尤其重要因为漏诊假负例的后果可能非常严重。
from sklearn.metrics import confusion_matrix,accuracy_score,precision_score,recall_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假设我们有以下真实标签和预测结果
y_true np.array([2, 0, 2, 2, 0, 1])
y_pred np.array([0, 0, 2, 2, 0, 2])# 计算召回率
recall recall_score(y_true, y_pred, averagemacro)
print(召回率, recall) 5.F1 分数F1-Score)F1分数是精确率和召回率的调和平均值它平衡了这两个指标。计算公式为F1分数在精确率和召回率都较高的算法上表现出色。它是一个综合指标特别适用于那些对精确率和召回率都同样重视的场景。
from sklearn.metrics import confusion_matrix,accuracy_score,precision_score,recall_score,f1_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 假设我们有以下真实标签和预测结果
y_true np.array([2, 0, 2, 2, 0, 1])
y_pred np.array([0, 0, 2, 2, 0, 2])# 计算准确率
accuracy accuracy_score(y_true, y_pred)
print(准确率, accuracy)# 计算精确率
precision precision_score(y_true, y_pred, averagemacro)
print(精确率, precision)# 计算召回率
recall recall_score(y_true, y_pred, averagemacro)
print(召回率, recall)# 计算F1分数
f1 f1_score(y_true, y_pred, averagemacro)
print(F1分数, f1)6.混淆矩阵混淆矩阵是评估分类问题的基础工具它是一个表格显示了分类算法的预测结果与真实标签之间的关系。对于二分类问题混淆矩阵包含真正例TP、真负例TN、假正例FP和假负例FN。这些值是计算其他评估指标的基础。混淆矩阵不仅提供了一个直观的视觉表示还允许我们深入了解模型在各个类别上的表现特别是当处理不平衡数据集时混淆矩阵可以揭示模型是否倾向于错误地将一个类别分类为另一个类别。
from sklearn.metrics import confusion_matrix,accuracy_score,precision_score,recall_score,f1_score
import numpy as np
import matplotlib.pyplot as plt
import seaborn as snsy_true np.array([2, 0, 2, 2, 0, 1])
y_pred np.array([0, 0, 2, 2, 0, 2])cm confusion_matrix(y_true, y_pred)
plt.figure(figsize(10,7))
sns.heatmap(cm, annotTrue,fmt d,cmap Blues)
plt.xlabel(Predicted)
plt.ylabel(Truth)
plt.show() 7.ROC曲线和AUC值ROC曲线是一个性能度量显示了在不同阈值设置下模型的真正例率召回率和假正例率的关系。AUC值表示ROC曲线下的面积用于衡量模型的整体性能AUC值越高模型性能越好。ROC曲线和AUC值是评估模型区分不同类别能力的重要工具尤其在二分类问题中非常实用。
from sklearn.metrics import roc_curve,roc_auc_score
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import numpy as np
import matplotlib.pyplot as pltX np.array([[0,0],[1,1],[2,0],[2,2],[0,1]])
y np.array([1,1,0,1,0])plt.scatter(X[y0,0],X[y0,1],color red,label Class 0)
plt.scatter(X[y1,0],X[y1,1],color blue,label Class 1)
plt.xlabel(Feature 1)
plt.ylabel(Feature 2)
plt.legend()
plt.title(Data Points by Class)
plt.grid(True)
plt.show()x_train,x_test,y_train,y_test train_test_split(X,y,test_size 0.4,random_state 42)
print(------训练样本------)
print(x_train,y_train)
print(------测试样本------)
print(x_test,y_test)clf RandomForestClassifier(n_estimators 100,max_depth 2,random_state 42)
clf.fit(x_train,y_train)y_scores clf.predict_proba(x_test)[:,1]
fpr,tpr,thresholds roc_curve(y_test,y_scores)
auc roc_auc_score(y_test,y_scores)plt.figure()
plt.plot(fpr,tpr,color darkorange,lw 2,label ROC curve (area %0.2f) % auc)
plt.plot([0,1],[0,1],color navy,lw 2,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(loclower right)
plt.show()