sklearn应用于机器学习时的验证方法

来源:互联网 发布:443端口号 编辑:程序博客网 时间:2024/06/03 18:01

        在讨论sklearn实现验证前,记录一个关于模型验证的常识以便今后查阅。

        在通过训练获得一个对象后,需要进行验证。此时,对于验证数据有一定的要求。之前,我的做法是从原始数据中随机抽取10000组数据进行验证,验证效果证明还可以。但是突然发现一个问题,由于应用是用于检测异常信息,而异常信息与正常信息相比,占比很低,这样验证出来的结果是不可靠的。例如,天气预报中预测降水不容易,平常人靠猜猜中的概率很低。但是如果猜不降水,也就是猜明天不下雨,那其实猜中的概率是很高的。所以对于验证数据,需要加大异常信息的比重,最终发现其实结果并没有那么完美。

             验证的过程需要放入交叉验证。在模型训练的过程中,在没有把握之前尽量不碰用于验证的数据。可以采用交叉验证。其中cv是指把样本随机分成几份,scoring指评估方式以“准确率”的形式展现。

        在验证分类的结果时,还可以采用混淆矩阵来帮助查看分类器。当然,由于多标签分类的特殊性,无法利用混淆矩阵。目前,在多类别分类中应用效果较好。每行每列都有准确分类和误分的数量。

        对于最终的验证,sklearn也同样提供了工具帮助完成。

[[2892    17   18    0    0    0    0    0    0] [   5    1435   0    0    9    0    0    0    0] [  11    0  298    0    0     1    0    0    0] [   0    0   0    0    0    0    0    0    0] [   3    75   0    0     4750   0    0    45    0] [  19    0   70    0    0    769   0    0    0] [   1    0   0    0    0    0    0    0     0] [  24    0   0    1     119   0    0    255   0] [   5    0   0    0     1    13   0    0  161]]
from sklearn.model_selection import cross_val_scorecross_val_score(clf, x_train, ytrain, cv=5, scoring="accuracy")from sklearn.metrics import confusion_matrixconfusion_matrix(y_test, y_result)
from sklearn.metrics import accuracy_scoreaccuracy_score(y_result, y_test)
1 0
原创粉丝点击