wordpress模板没反应,舆情优化公司,有了域名怎样做网站,温州外贸网站建设1. 前言 模型检验是数据科学项目中至关重要的步骤#xff0c;确保模型的质量#xff0c;可靠性和实用性。
模型检验的主要目的是评估模型的性能#xff0c;验证其在实际应用中的效果#xff0c;以及防止模型出现过拟合#xff0c;欠拟合或其他潜在问题。
在日常学习工作…1. 前言 模型检验是数据科学项目中至关重要的步骤确保模型的质量可靠性和实用性。
模型检验的主要目的是评估模型的性能验证其在实际应用中的效果以及防止模型出现过拟合欠拟合或其他潜在问题。
在日常学习工作中我们常常使用sklearn中的metrics包富含了许多模型检验函数。
#安装方式1:命令行与终端安装
pip install -U scikit-learn#安装方式2:基于Anaconda环境
conda install scikit-learnfrom sklearn.metrics import ###
2. 分类模型
2.1 评价指标
精准率Accuracy
正确分类样本数量与总样本数量的百分比
accuracy_score(y_true,y_pred) 精确率Precision
正确预测为正类的样本数占所有预测为正类的样本数的比例
•适用场景任务关注的是预测为正类的样本是否真的为正类时
precision_score(y_true,y_pred,averageNone/macro/micro/weighted)
参数用途适用场景binary适用于二分类问题只会计算正类通常标签为1的精确率二分类问题micro计算全局精确率所有类别加总进行计算多分类问题macro计算每个类别的Precision然后取平均每个类别给予相同的权重weighted计算每个类别精确率按照各个类别样本数量进行加权平均类别样本数量不平衡时samples计算每个样本的精确率然后对所有样本取平均多标签分类问题其中每个样本可以同时属于多个类别 召回率Recall
正确预测为正类的样本占所有实际为正类的样本数的比例
•适用场景关注的是所有正类样本是否被找出来时
recall_socre(y_true,y_pred,averagebinary)
参数同precision F1-score
2 * Recall*Precision / RecallPrecision
•适用场景平衡Precision与Recall尤其是样本类别分布不均时适用。
f1_score(y_true,y_pred,averagebinary) 分类报告
生成包含精确率召回率F1-score和支持度的分类报告。
from sklearn.metrics import classification_report
classification_report(y_true,y_pred) 2.2 ROC曲线
roc曲线横坐标与纵坐标也是两个评价指标在每个阈值的情况下模型指标数值也会随之改变依次描点得来。
横坐标FPR FP / FPTN表示为实际为负类样本中被错误预测为正类的比例
纵坐标Recall - 正确预测为正类的样本占所有实际为正类的样本数的比例
换个理解方式横坐标向右移动代表模型预测负类样本错误率就越高
纵坐标向上移动模型预测正类样本的正确率就越高
所以根据ROC曲线越靠近01的点模型预测效果就越好。
from sklearn.metrics import roc_curve,roc_auc_score
fpr,tpr,thresholds roc_curve(y_true,y_proba)
注意此处所填充数据不是y_pred而是y_proba预测概率以此确定在不同阈值下模型的分类效果
model.predict_proba(X_test)
y_proba model.predict_proba(X_test)[:,1]
#返回一个二维数组例如[0.7,0.3]表示70%概率属于第一个类别0负类30%概率为正类1
#清洗数据时一般默认0为负类1为正类
import matplotlib.pyplot as plt
plt.figure()
plt.plot(fpr,tpr,colorblue)
plt.plot([0,1],[0,1],--,colorred)
plt.plot(best_fpr,best_tpr,markero,markersize8,colorblack)
plt.text(best_fpr,best_tpr0.1,best threshold)
plt.xlabel(FPR)
plt.ylabel(TPR)
plt.title(ROC curve)
基于最靠近01的点选择最佳阈值 AUC
表示ROC曲线与坐标轴之间的面积面积越大说明该模型预测效果越好
from sklearn.metrics import roc_auc_socre
roc_auc_score(y_true,y_proba) 更深入了解请参考超简单白话文机器学习 - 模型检验与评估含算法介绍公式源代码实现以及调包实现_机器学习模型检验-CSDN博客 2.3 混淆矩阵
混淆矩阵是一种用于评估分类模型性能的工具特别是在二分类问题中。直观展示模型在不同类别上的预测结果了解模型分类准确率以及各种类型的错误。
列表示样本实际类别行表示样本预测类别。
基于预测与真实判断时真假预测值决定P与N。
实际预测预测为负 Negative预测为正 Positive实际为负 NegativeTNFP实际为正 PositiveFNTP
form sklearn.metrics import confusion_matrix
cm confusion_matrix(y_true,y_pred)
这样生成出来的混淆矩阵较为简陋数据分析有时需要让数据更加直观可视图更加直观 seaborn
import seaborn as ins
sns.heatmap(cm,annotTrue,fmtd,cmapYlGnBu,cbarTrue)
#annot指定在图中是否显示数值
#fmt数值显示类型 .2f显示小数
#cmap配色方案例如Viridis,coolwarm,Blues
#cbar是否显示颜色条 ConfusionMatrixDisplay
from sklearn.metrics import ConfusionMatrixDisplay
CM ConfusionMatrixDisplay(cm)
CM.plot(cmap) 也可以直接从模型中生成混淆矩阵
ConfusionMatrixDisplay.from_estimator(model,X_test,y_test,cmapBlues)
plt.show() 3. 回归模型
3.1 评价指标
指标函数用途均方误差MSEmean_squared_error(y_true,y_pred,squaredTrue)计算模型均方误差预测值与实际值之间的误差squaredFalse时计算RMSEMSE取平方根平均绝对误差MAEmean_absolute_error(y_true,y_pred)计算模型的平均绝对误差中位数绝对误差median_absolute_error(y_true,y_pred)计算模型中位数绝对误差 3.2 系数
R²决定系数
决定系数Coefficient of Determination通常表示为 R²是一种用于评估回归模型拟合优度的统计指标。它表示因变量的变异性能够由模型解释的比例即模型对数据的拟合程度。
R² 的取值范围在 0 到 1 之间。一个较高的 R² 值表示模型能够较好地解释因变量的变异性即模型的拟合程度较好。
计算方式如下 其中SSres表示预测值与实际值之间差异的平方和越小越好模型无法解释的因变量的剩余变异性即模型无法完全拟合的部分 1 - SSres则表示模型可以解释的部分 SStot表示实际值与均值之间差异的平方和其意义在于没有考虑任何自变量的情况下因变量的总变异性 R² 只能衡量模型对因变量的拟合优度但不能判断模型是否具有因果关系、是否过拟合或是否适合应用于其他数据集。
from sklearn.metrics import r2_score
r2 r2_score(y_true,y_predict)#或者使用model.score方法
r2_alternative model.score(X_test,y_test) 4. 参考资料
超简单白话文机器学习 - 模型检验与评估含算法介绍公式源代码实现以及调包实现_机器学习模型检验-CSDN博客
均方误差MSE、均方根误差RMSE、平均绝对误差MAE、决定系数R²解释-CSDN博客