文章目录
前言
机器学习模型评估是评估模型性能的过程,它是机器学习的核心环节之一。在模型评估中,我们使用训练集和测试集来评估模型的性能。机器学习模型评估的目的是通过使用某些评估指标来评估模型的预测能力,并确定哪个模型最适合特定的数据集。本文将介绍机器学习模型评估的基础知识,并提供一些常用的评估指标和相应的Python代码示例
一、训练集和测试集
在机器学习中我们将训练集用来训练模型,用测试集来验证模型的性能,通常训练集/测试集=8/2 或者 7/3
二、评估指标
机器学习模型评估指标有很多,我们常用以下指标去评估
在介绍指标之前我们先介绍几个参数
- TP FP TN FN
- TP(ture postive):TP正类判断为正类,就是我们让模型识别男的,它成功识别男的
- FP(flase positive):FP负类判断为正类,让模型识别男的,他把女的看成男的识别
- TN(ture negatives):TN负类判断为负类,让模型识别男的,并且成功把剩下女的识别为女的
- FN(flase negatives):FN正类判断为负类,让模型识别男的,把男的当女的筛选掉了
1 准确率(Accuracy)
准确率是分类问题中最常用的评估指标。它是指模型正确分类的样本数占总样本数的比例。准确率越高,模型的性能越好。
- 数学公式为
Accuracy=(TP+TN)/(TP+FP+TN+FN)
在Python中,我们可以使用scikit-learn库来计算准确率:
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_true, y_pred)
y_true代表真实值标签
y_pred代表预测值标签
2 精确率(Precision)
精确率是指模型预测为正例的样本中,真正例的比例。精确率用于评估模型的准确性。
- 数学公式
Precision=TP/(TP+FP)
- python代码
from sklearn.metrics import precision_score
precision=precision_score(y_true,y_pred)
3 召回率(Recall)
召回率是指模型正确预测为正例的样本占总正例样本数的比例。召回率用于评估模型的完整性
- 数学公式
Recall=TP/(TP+FN)
- python代码
from sklearn.metrics import recall_score
recall=recall_score(y_ture,y_pred)
4 F1 (F1 sorce)
F1是精确率和召回率的加权平均值。它是一个综合指标,可以同时评估模型的准确性和完整性。
- 数学公式
F1=2*(Precision*Recall)/(Precision+Recall)
- python代码
from sklearn.metrics import f1_score
f1 = f1_score(y_true, y_pred)
5. AUC值(Area Under the ROC Curve)
AUC值是用于评估二分类模型性能的指标。它是ROC曲线下的面积,可以衡量模型预测正例和负例的能力。
- python代码
from sklearn.metrics import roc_auc_score
auc = roc_auc_score(y_true, y_pred_prob)
三、整体使用
from sklearn.datasets import make_classification
from sklearn.metrics import precision_score,recall_score,roc_auc_score,f1_score,accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
"生成一个二分类数据"
#n_samples代表生成数量,n_calss代表分类类型,random_state代表随机种子
X,y=make_classification(n_samples=2000,n_classes=2,random_state=42)
"""
生成训练集和测试机
"""
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=42,test_size=0.2)
"""
训练逻辑回归模型
"""
logistci=LogisticRegression(random_state=42)
logistci.fit(X_train,y_train)
"""
预测
"""
y_pre=logistci.predict(X_test)
# print(y_pre)
"""
模型评估
"""
accuracy_score=accuracy_score(y_test,y_pre)
print("accuracy_score:",accuracy_score)
precision_score=precision_score(y_test,y_pre)
print('precision_score:',precision_score)
recall_score=recall_score(y_test,y_pre)
print('recall_score:',recall_score)
f1_score=f1_score(y_test,y_pre)
print('f1_score:',f1_score)
roc_auc_score=roc_auc_score(y_test,y_pre)
print("roc_auc_score:",roc_auc_score)
感觉这些指标还是相对有点低
总结
本文介绍了机器学习评估中常用的指标与使用,下一节我们将会对sklearn内置的是手写数字数据集作为实验,进行模型训练与可视化评估。
希望大家多多支持,我会继续努力学习,分享更多有趣的东西