1. 数据拆分
数据拆分,即划分训练数据集&测试数据集
现在也多直接调用sklearn中的库
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=10)
"注意X_train, X_test, y_train, y_test顺序"
2. 评价分类结果
2.1 准确度(accuracy)
accuracy_score:函数计算分类准确率,返回被正确分类的样本比例(default)或者是数量(normalize=False)
from sklearn.metrics import accuracy_score
但是它在某些情况下并不一定是评估模型的最佳工具。比如一个经典例子—癌症预测系统,如果癌症的发病率只有百分之0.1,那么只要系统都预测成健康,那么准确就达到了99.9%,但是这样的系统基本上没有什么价值,因为我们关注的是比较少的那一部分样本,但是这一部分样本,并没有预测出来。
这是就需要使用混淆矩阵(Confusion Matrix)做进一步分析。
2.2 混淆矩阵(Confusion Matrix)
from sklearn.metrics import confusion_matrix
对于二分类问题来说,所有的问题被分为0和1两类,混淆矩阵是2*2的矩阵:
预测值0 | 预测值1 | |
---|---|---|
真实值0 | TN | FP |
真实值1 | FN | TP |
- TN:真实值是0,预测值也是0,即我们预测是Negative,预测True
- FP:真实值是0,预测值是1,即我们预测是Positive,但是预测False
- FN:真实值是1,预测值是0,即我们预测是Negative,但预测False
- TP:真实值是1,预测值是1,即我们预测是Positive,预测True
现在假设有1万人进行预测,填入混淆矩阵如下:
预测值0 | 预测值1 | |
---|---|---|
真实值0 | 9978 | 12 |
真实值1 | 2 | 8 |
对于1万个人中,有9978个人本身并没有癌症,我们的算法也判断他没有癌症;有12个人本身没有癌症,但是我们的算法却错误地预测他有癌症;有2个人确实有癌症,但我们算法预测他没有癌症;有8个人确实有癌症,而且我们也预测对了。
2.3 精确率(precision)
from sklearn.metrics import precision_score
预测值0 | 预测值1 | |
---|---|---|
真实值0 | 9978 | 12 |
真实值1 | 2 | 8 |
根据混淆矩阵可求得精确率:$\ precision = \frac{TP}{TP+FP} $ ,即精准率为8/(8+12)=40%。所谓的精准率是:分母为所有预测为1的个数,分子是其中预测对了的个数,即预测值为1,且预测对了的比例。
在有偏的数据中,我们通常更关注值为1的特征,比如“患病”,比如“有风险”。在100次结果为患病的预测,平均有40次预测是对的。即精准率为我们关注的那个事件,预测的有多准。
2.4 召回率(recall)
from sklearn.metrics import recall_score
预测值0 | 预测值1 | |
---|---|---|
真实值0 | 9978 | 12 |
真实值1 | 2 | 8 |
根据混淆矩阵也可求得召回率:$\ recall = \frac{TP}{TP+FN} $,即召回率为8/(8+2)=80%。所谓召回率是:所有真实值为1的数据中,预测对了的个数。每当有100个癌症患者,算法可以成功的预测出80个 。召回率也就是我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。
2.5 F1 Score
3. 评价回归结果
来源:CSDN
作者:铁血阿张
链接:https://blog.csdn.net/weixin_43618989/article/details/104670364