之前的章节我们介绍了多种机器学习算法:
KNN->用于解决分类问题
线性回归->用于解决回归问题
逻辑回归->既可以解决分类问题,又可以解决回归问题
。。。
总体来说,我们机器学习的算法要解决的问题分为两大类,分别为:分类问题和回归问题。
从之前的内容来看,我们通过众多的机器学习算法得到的模型需要进行评估。
评价回归问题:MSE,MAE,RMSE,R^2(目前学习为止最好的评价算法)
评价分类问题:分类准确度(accuracy_score)
经验之谈,评价分类问题要比评价回归问题要复杂的多。
小引子:
我们搭建一个新冠肺炎检测系统,输如我们想要测试的人的数据进行检测,来根据得到的结果判断此人是否得了新冠肺炎。假设我们通过学习得到的模型预测的准确度为99.9%,
并且得有新冠肺炎的概率为0.1%,那么我们就算系统什么都不做,还是会有99.9%的预测准确度。
通过分析原因我们便得到,对于极度偏斜的数据(Skewed data),只使用分类准确度的方法来评估是远远不够的。
极度偏斜的数据:不同类型之间的样本的数量相差特别大,假设新冠肺炎感染概率1:10000
面对这种极度偏斜的数据,即使系统什么都不做,也可以达到十分大的准确度,此时我们可以通过混淆矩阵来进行进一步的分析。
对于各种概念,通过一张图进行相关介绍分析:
混淆矩阵代码实现:
'''Confusion Matrix'''
def TN(y_true,y_predict):
'''check'''
assert len(y_true) == len(y_predict)
return np.sum((y_true==0) & (y_predict==0))
def TP(y_true,y_predict):
'''check'''
assert len(y_true) == len(y_predict)
return np.sum((y_true==1) & (y_predict==1))
def FN(y_true,y_predict):