python机器学习-sklearn挖掘乳腺癌细胞(五)

python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制)

网易云观看地址

https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

 模型验证

分类器好坏验证,模型建立好后,不是万事大吉,需要进行crossvalidation, AUC,GINi,KS,GainTable检验

KS可以检测模型区分好坏客户能力,如果有一个分数段区分能力强,KS会大于0.2

AUC检测模型分类器效果,分类器敏感度越高,AUC越大,一般AUC大于0.7,分类器准确性就不错。

Gain Table可以检测模型收益情况和排序能力

模型验证中数据要拆分为train(训练),test(测试),oot(跨时间)

train和test是同一个时间段,一般三七开,train占百分之70,test占百分之30

oot的时间段在train,test后面,用于测试未来数据

下图是模型验证的可视化:

包括ROC,提升图,KS,PSI四个指标

由于时间关系,我们只详细说明一下ROC/AUC检验

auc分数有两种计算方式,第一种是根据目标变量y_true,预测分数/预测概率y_socres,通过roc_auc_score(y_true, y_scores)计算AUC

第二种方法是通过fpr,tpr,通过auc(fpr,tpr)来计算AUC

excel 绘图ROC

ROC的前置条件是分数越高,阳性率越高,但风控模型中,有的分数越低,坏客户概率越高,例如蜜罐分数,因此ROC绘制出来是反的,需要对阳性标签反转pos_label=0

由于分数越低,坏客户概率越高,画出来的ROC曲线是反转的,需要纠正

AUC/ROC检验代码

# -*- coding: utf-8 -*-
"""
Created on Thu Apr 12 22:31:31 2018

@author: [email protected]
"""
import numpy as np
from sklearn import metrics
from sklearn.metrics import roc_curve, auc,roc_auc_score  ###计算roc和auc

import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import mglearn
import matplotlib.pyplot as plt

cancer=load_breast_cancer()

#mglearn.plots.plot_knn_classification(n_neighbors=3)
X_train,x_test,y_train,y_test=train_test_split(cancer.data,cancer.target,stratify=cancer.target,random_state=42)

knn=KNeighborsClassifier()
knn.fit(X_train,y_train)
print("accuracy on the training subset:{:.3f}".format(knn.score(X_train,y_train)))
print("accuracy on the test subset:{:.3f}".format(knn.score(x_test,y_test)))

#Auc验证,数据采用测试集数据
#癌症的概率
proba_cancer=knn.predict_proba(x_test)
y_scores=pd.DataFrame(proba_cancer)[1]
y_scores=np.array(y_scores)
y_true=y_test
#auc分数
#auc分数有两种计算方式,第一种是根据目标变量y_true,预测分数/预测概率y_socres,通过roc_auc_score(y_true, y_scores)计算AUC
AUC=roc_auc_score(y_true, y_scores)
print("AUC:",AUC)
#auc第二种方法是通过fpr,tpr,通过auc(fpr,tpr)来计算AUC
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_scores, pos_label=1)
AUC1 = auc(fpr,tpr) ###计算auc的值 

#print("fpr:",fpr)
#print("tpr:",tpr)
#print("thresholds:",thresholds)
print("AUC1:",AUC1)

if AUC >=0.7:
    print("good classifier")
if 0.7>AUC>0.6:
    print("not very good classifier")
if 0.6>=AUC>0.5:
    print("useless classifier")
if 0.5>=AUC:
    print("bad classifier,with sorting problems")

#绘制ROC曲线
#画对角线
plt.plot([0, 1], [0, 1], ‘--‘, color=(0.6, 0.6, 0.6), label=‘Diagonal line‘)
plt.plot(fpr,tpr,label=‘ROC curve (area = %0.2f)‘ % AUC)
plt.title(‘ROC curve‘)
plt.legend(loc="lower right")

  

扫二维码,关注博主主页,学习更多Python知识

https://m.study.163.com/user/1135726305.htm?utm_campaign=share&utm_medium=iphoneShare&utm_source=weixin&utm_u=1015941113

原文地址:https://www.cnblogs.com/webRobot/p/9743585.html

时间: 2024-07-31 20:38:52

python机器学习-sklearn挖掘乳腺癌细胞(五)的相关文章

python机器学习-sklearn挖掘乳腺癌细胞(三)

python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share 乳腺癌细胞和正常细胞是有显著区别的 癌细胞半径更大,形状更加不规则,凹凸不平.我们可以用科学手段来区分正常细胞和癌细胞吗?答案

python机器学习-sklearn挖掘乳腺癌细胞

python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share 课程概述 Toby,持牌照金融公司担任模型验证专家,国内最大医药数据中心数据挖掘部门负责人!此课程讲述如何运用python的sklearn快速

python机器学习工具包scikit-learn

scikit-learn这个非常强大的python机器学习工具包 http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html S1. 导入数据 大多数数据的格式都是M个N维向量,分为训练集和测试集.所以,知道如何导入向量(矩阵)数据是最为关键的一点.这里要用到numpy来协助.假设数据格式是: Stock prices    indicator1    indicator2 2.0             123  

Python机器学习中文版

Python机器学习简介 第一章 让计算机从数据中学习 将数据转化为知识 三类机器学习算法 第二章 训练机器学习分类算法 透过人工神经元一窥早期机器学习历史 使用Python实现感知机算法 基于Iris数据集训练感知机模型 自适应线性神经元及收敛问题 Python实现自适应线性神经元 大规模机器学习和随机梯度下降 第三章 使用Scikit-learn进行分类器之旅 如何选择合适的分类器算法 scikit-learn之旅 逻辑斯蒂回归对类别概率建模 使用正则化解决过拟合 支持向量机 使用松弛变量解

python机器学习简介

目录 一:学习机器学习原因和能够解决的问题 二:为什么选择python作为机器学习的语言 三:机器学习常用库简介 四:机器学习流程 ??机器学习是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能.从数据中提取知识,也被称为预测分析 或 统计学习. ??它是人工智能的核心,是使计算机具有智能的根本途径. ??下面就让我们先了解一下机器学习吧. 一:学习机器

七步精通Python机器学习 转

开始.这是最容易令人丧失斗志的两个字.迈出第一步通常最艰难.当可以选择的方向太多时,就更让人两腿发软了. 从哪里开始? 本文旨在通过七个步骤,使用全部免费的线上资料,帮助新人获取最基本的 Python 机器学习知识,直至成为博学的机器学习实践者.这篇概述的主要目的是带领读者接触众多免费的学习资源.这些资源有很多,但哪些是最好的?哪些相互补充?怎样的学习顺序才最好? 我假定本文的读者不是以下任何领域的专家: ?  机器学习 ?  Python ?  任何Python的机器学习.科学计算.数据分析库

Python机器学习库资料汇总

声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅里叶变换和随机数生成函数. SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科

《Python机器学习及实践:从零开始通往Kaggle竞赛之路》

<Python 机器学习及实践–从零开始通往kaggle竞赛之路>很基础 主要介绍了Scikit-learn,顺带介绍了pandas.numpy.matplotlib.scipy. 本书代码基于python2.x.不过大部分可以通过修改print()来适应python3.5.x. 提供的代码默认使用 Jupyter Notebook,建议安装Anaconda3. 最好是到https://www.kaggle.com注册账号后,运行下第四章的代码,感受下. 监督学习: 2.1.1分类学习(Cla

2016年GitHub排名前20的Python机器学习开源项目(转)

当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们的发展趋势.和去年一样,KDnuggets 介绍了 GitHub 上最新的并且排名前 20 的 Python 机器学习开源项目.令人吃惊的是,去年一些最活跃的项目已经停滞不前了,也有一些项目跌出了前 20 名(在 contribution 和 commit 方面),当然,也有 13 个新项目进入了前