sklearn里面knn调参数以及分类器效果评估方法

当然文档写的很好了,多而全面, 我这里只是针对自己情况做个学习的记录
http://scikit-learn.org/stable/modules/neighbors.html#classification
http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

1. 调参数

class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=1, **kwargs)
n_neighbors:选取几个邻居
weights:邻居的权重是平均呢,还是越重话语权越大呢
algorithm:后面再展开
- ‘ball_tree’ will use BallTree
- ‘kd_tree’ will use KDTree
- ‘brute’ will use a brute-force search.
- ‘auto‘默认选项,是看哪个好用那个
leaf_size:只有ball_tree和kd_tree才有必要
p与metric:距离表示,p=1是manhattan_distance,p=2是euclidean_distance。

2. 分类问题评价方法

https://www.zhihu.com/question/30643044 这个知乎回答下面已经很好了
https://blog.csdn.net/pipisorry/article/details/51788927 强烈推荐
基本都是基于confusion metrix,混淆矩阵记忆口诀:真实情况在前(true/false), 预测结果在后(positive/negative); 假新闻被当真,fb里面许多fp。

综合评价

Confusion Matrix混淆矩阵
这里写图片描述(图来自知乎京东白条)
PRC: Precision Recall Curve 数据不均衡非常敏感,不均衡的首选。上面比下面好。
- 纵轴:precision
- 横轴: recall
ROC: Receiver Operating Characteristic**: AUC这个指标有两种解释方法,一种是传统的“曲线下面积”解释,另一种是关于排序能力的解释。例如0.7的AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。左上好。
- 横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-Specificity)
- 纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率),和recall定义相同。
因此一个好的ROC曲线是横轴还很小的时候,纵轴就很大,即已经预测了n个案例中,把对当对的越多越好,把错当对的越少越好。Specificity与Sensitivity分母都是事实情况的某一类1/0。

roc曲线有一个好处,就是正负样本分布变化的时候,曲线仍然不变,无视不平衡数据。

ks曲线:K-S 曲线能直观地找出模型中差异最大的一个分段,比如评分模型就比较适合用 KS 值进行评估;但同时,KS 值只能反映出哪个分段是区分度最大的,不能反映出所有分段的效果。
http://pengshuang.space/2017/08/20/AUC%E3%80%81ROC-%E4%BB%A5%E5%8F%8A-KS-%E4%BB%8B%E7%BB%8D/

其他评价

Precision: tp/(tp+fp)推荐了10个好的,有8个好的,2个坏的。精确度就是0.2
Recall: tp/(tp+fn)本来正确的有10个,8个被我判断出来了,2个没有判断出来。那么召回率就是0.8,说明我覆盖率还不错。
f1: 两者调和,公式不一
accuracy: 这个最容易骗人了,判断对的除以总的案例。问题在于当正负案例不平衡时候,比如总共10个,错的9个,使用傻瓜算法全判断为错,正确率仍有90%。我在公司做一个项目,之前一直使用它,总是百分之九十几。后来发现上当了应该采用precision。
参考:https://www.zhihu.com/question/30643044
洛伦兹曲线
lift曲线
Lift =[TP/(TP+FP)] / [(TP+FN)/(TP+FP+FN+TN)] = PV_plus / pi1,它衡量的是,与不利用模型相比,模型的预测能力“变好”了多少,lift(提升指数)越大,模型的运行效果越好。
ROC曲线和lift曲线都能够评价逻辑回归模型的效果:类似信用评分的场景,希望能够尽可能完全地识别出有违约风险的客户,选择ROC曲线及相应的AUC作为指标;
类似数据库精确营销的场景,希望能够通过对全体消费者的分类而得到具有较高响应率的客户群从而提高投入产出比,选择lift曲线作为指标;
增益图
gain是描述整体精准率的指标。按照模型预测出的概率从高到低排列,将每一个百分位数内的精准率指标标注在图形区域内,就形成了非累积的增益图。如果对每一个百分位及其之前的精准率求和,并将值标注在图形区域内,则形成累积的增益图。

作者:Leenon https://www.jianshu.com/p/6ffa3df3ec86

不均衡数据

https://blog.csdn.net/whiterbear/article/details/52005545

其他参考:
https://cosx.org/2009/02/measure-classification-model-performance-lift-gain/
http://chen.yi.bo.blog.163.com/blog/static/150621109201042641952619/

猜你喜欢

转载自blog.csdn.net/joshuajinxiaoshuai/article/details/80349264