机器学习三种分类模型评价标准

分类模型的三种评价标准

分类模型有三种评价标准,分别是:混淆矩阵,ROC曲线和AUC面积

第一种标准:混淆矩阵

混淆矩阵:如下图
在这里插入图片描述

<1.>各个参数的含义:
N/P=negative/positive:表示猜结果为错误(negative)或猜结果为正确(positive)。
T/F=true/false:表示预测成功(True)或预测失败(False)。
TN:表示猜结果应该为错误(negative即0),预测成功(true),真正的结果也是0。
FP:表示猜结果应该为正确的(positive,即1),但是真正的结果却是0,即预测失败了(false)。
预测结果(P/N)放在后面,预测结果是否正确(F/T)放在前面。

<2.>混淆矩阵的的各个评价指标:
正确率ACCuracy:即预测结果成功/所有结果总数:=(TP+TN)/(TP+TN+FP+FN)。
精确率Prevision:即预测结果成功/积极预测总数=TP/(TP+FP)。

召回率recall/灵敏度Sensitivity:即positive预测结果成功/结果真正为正确的总数=TP/(TP+FN)。
特异度Specificity:negative预测成功/结果真正为错误的总数=TN/(TN+FP)。

F1 Score:精准率(prevision)和召回率(recall)的调和平均数:
F1 score=(2 * prevision * recall)/(previson + recall)
F1 score是衡量二分模型精确度的指标,兼顾了精确率和召回率。

这里用sklearn自带的鸢尾花的数据集演示一下混淆矩阵的用法

from sklearn import datasets#导入数据集
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix#导入混淆矩阵
from sklearn.metrics import precision_score,recall_score,f1_score#导入混淆矩阵的评价指标
#metrics衡量
df=datasets.load_iris()
X=df.data
y=df.target
#画分布散点图
plt.scatter(X[y==0,0],X[y==0,1],color='r')
plt.scatter(X[y==1,0],X[y==1,1],color='g')
#plt.scatter(X[y==2,0],X[y==2,1],color='b')
plt.show()
#由于鸢尾花有三种类型,但这里只做二分类,所有取y<2的数据
X=X[y<2]
y=y[y<2]
#划分数据
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2)
#建立逻辑分类模型
logic=LogisticRegression()
logic.fit(X_train,y_train)#数据填充
y_predict=logic.predict(X_test)#结果预测
logic_score=logic.score(X_test,y_test)#预测结果得分

print('预测分类值:',y_predict)
print('混淆矩阵:',confusion_matrix(y_test,y_predict))
print('精准率:',precision_score(y_test,y_predict))
print('召回率:',recall_score(y_test,y_predict))
print('f1_score:',f1_score(y_test,y_predict))

#输出结果如下:
预测分类值: [0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 1 1 0 0 0]
混淆矩阵: 
[[ 9  0]
 [ 0 11]]
精准率: 1.0
召回率: 1.0
f1_score: 1.0

由于是标准数据且分类十分明显,所以精准率和召回率都是100%,说明预测的结果非常准确,f1_score得分为1.0即100分,说明这个分类模型准确无误。
散点图如下:
在这里插入图片描述
不同颜色的散点代表了不同种类的鸢尾花,通过散点的落点位置可以判断是属于哪一种鸢尾花。

ROC曲线与AUC面积

ROC曲线是根据混淆矩阵的评价标准组成的,横轴为FPR(false positive rate)=FP/(FP+TN),纵轴为TPR(True positive rate)=TP/(TP+FN)

from sklearn import datasets
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score,recall_score,f1_score
#metrics衡量
df=datasets.load_iris()
X=df.data
y=df.target
plt.scatter(X[y==0,0],X[y==0,1],color='r')
plt.scatter(X[y==1,0],X[y==1,1],color='g')
#plt.scatter(X[y==2,0],X[y==2,1],color='b')
plt.show()
X=X[y<2]
y=y[y<2]
#划分数据
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2)
#建立逻辑分类模型
logic=LogisticRegression()
logic.fit(X_train,y_train)
y_predict=logic.predict(X_test)
logic_score=logic.score(X_test,y_test)

print('预测分类值:',y_predict)
print('混淆矩阵:',confusion_matrix(y_test,y_predict))
print('精准率:',precision_score(y_test,y_predict))
print('召回率:',recall_score(y_test,y_predict))
print('f1_score:',f1_score(y_test,y_predict))

from sklearn.metrics import roc_curve,roc_auc_score
decision_score=logic.decision_function(X_test)#点到超平面的距离,即点到决策边界的距离
print(decision_score)
fprs,tprs,thesholds=roc_curve(y_test,decision_score)
print(thesholds)#临界值

plt.plot(fprs,tprs)
plt.xlabel('False POsitive Rate')
plt.ylabel('True Positive Rate')
plt.show()

在这里插入图片描述

上面是鸢尾花的ROC曲线,这条曲线覆盖下的面积即AUC面积,可以用微积分得出,AUC面积越大,分类的精准度越高。

Pyspark是Apache Spark的一个Python接口,它在大规模数据处理中广泛用于机器学习。对于二分类模型评价指标,主要有以下几个: 1. **准确率(Accuracy)**:预测正确的样本数占总样本数的比例,是最直观的评估指标。公式为:(TP + TN) / (TP + TN + FP + FN),其中TP(True Positive)表示真正例,TN(True Negative)表示真负例,FP(False Positive)表示假正例,FN(False Negative)表示假负例。 2. **精确率(Precision)**:模型预测为正例且实际为正例的比例,衡量的是模型在预测为正类时的可靠性。公式为:TP / (TP + FP)。 3. **召回率(Recall)**:实际为正例被模型正确预测为正例的比例,衡量的是模型找到所有正例的能力。公式为:TP / (TP + FN)。 4. **F1分数(F1 Score)**:精确率和召回率的调和平均值,综合考虑了两个指标。公式为:2 * Precision * Recall / (Precision + Recall)。 5. **ROC曲线(Receiver Operating Characteristic Curve)**:绘制出真正例率(TPR)与假正例率(FPR)之间的关系,用来评估模型在不同阈值下的性能。 6. **AUC-ROC(Area Under the ROC Curve)**:ROC曲线下的面积,值越大说明模型性能越好,1代表完美分类。 7. **混淆矩阵(Confusion Matrix)**:展示模型预测结果与实际结果的对比,直观地看到分类效果。 8. **交叉验证得分(Cross-validation Score)**:通过将数据集划分为训练集和验证集多次,计算平均得分,避免过拟合或欠拟合的影响。 在选择指标时,需要根据具体业务场景和需求来决定,比如关注模型的准确性、误报率还是查全率等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值