问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

机器学习:分类评估方法

创作时间:
作者:
@小白创作中心

机器学习:分类评估方法

引用
CSDN
1.
https://m.blog.csdn.net/Wei_sx/article/details/144612269

在机器学习模型训练和评估中,尤其对于分类任务,评估方法至关重要。它们帮助我们了解模型在未见数据上的表现,确保模型能够进行有效的预测。以下是一些常用的分类评估方法的详细介绍,包括准确率、混淆矩阵和分类报告。

1. 准确率 (Accuracy)

定义: 准确率是正确预测的样本数总样本数的比率,公式如下:

其中:
TP (True Positives): 真阳性,正确预测为正类的样本数。
TN (True Negatives): 真阴性,正确预测为负类的样本数。
FP (False Positives): 假阳性,错误预测为正类的样本数。
FN (False Negatives): 假阴性,错误预测为负类的样本数。

优缺点:
优点: 简单易懂,计算容易。
缺点: 在类别不平衡的情况下,准确率可能会误导,例如如果大多数样本属于一个类别,模型只需预测该类别即可获得高准确率。

2. 混淆矩阵 (Confusion Matrix)

定义: 混淆矩阵是一种可视化工具,用于总结分类模型的表现。它显示真实标签与模型预测标签之间的关系。通常以 2x2 矩阵的形式展示二分类问题:

优缺点:
优点: 提供了详细的分类信息,能够显示模型的表现如何,在不同类别上的准确性如何。
缺点: 矩阵的解释可能对初学者来说不够直观。

3. 分类报告 (Classification Report)

定义: 分类报告提供了更多关于模型性能的详细统计信息,包括以下几个重要指标:

3.1 精确率 (Precision)

正确预测的正类样本所有预测为正类样本的比例。

3.2 召回率 (Recall)

正确预测的正类样本实际正类样本的比例,也称为灵敏度

3.3 F1 分数 (F1 Score)

精确率与召回率的调和平均值,能够提供一个综合评估。

其中:P为精确率、R为召回率。

优缺点:
优点: 可以更全面地评估模型的性能,特别是在处理类别不平衡时,能够更准确地反映模型表现。
缺点: 计算过程较复杂,需要均衡考虑精确率和召回率。

4.示例

癌症分类预测-良/恶性乳腺癌肿瘤预测

# 导入模块
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score,classification_report,confusion_matrix,accuracy_score

# 1.获取数据
names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
                   'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
                   'Normal Nucleoli', 'Mitoses', 'Class']
data = pd.read_csv('./data/breast+cancer+wisconsin+original/breast-cancer-wisconsin.data',names=names)

# 2.基本数据处理
# 2.1 缺失值处理
# 将问号处替换成NAN
data = data.replace(to_replace='?',value=np.nan)
# 删除name对应的航数据
data = data.dropna()
# 2.2 确定特征值,目标值
x = data.iloc[:,1:-1]
y = data.Class
# 2.3 分割数据
x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=2,test_size=0.2)

# 3.特征工程(标准化)
# 创建标准器(实例化一个标准化对象)
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)

# 4.机器学习(逻辑回归)
# 实例化一个估计器(模型estimator)
estimator = LogisticRegression()
# 模型训练
estimator.fit(x_train,y_train)

# 5.模型评估
# 5.1 测值
y_predict = estimator.predict(x_test)
print('预测值:\n',y_predict)
# 5.2.1 准确率
ret = estimator.score(x_test,y_test)
print('准确率:',ret)
# 5.2.2 准确率
accuracy = accuracy_score(y_test,y_predict)
print('准确率:',accuracy)
# 5.3 混淆矩阵
matrix = confusion_matrix(y_test,y_predict)
print('混淆矩阵:\n',matrix)
# 5.4 分类报告:精确率/召回率/F1指标评价
ret =  classification_report(y_test,y_predict,labels=(2,4))
print(ret)  

5. 总结

在进行 LogisticRegression 或任何其他分类模型的评估时,使用准确率、混淆矩阵和分类报告可以获得关于模型性能的多维视角。这些评估方法对理解模型在特定任务上的优缺点至关重要,能够帮助我们做出更有信息依据的决策。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号