第33步 机器学习分类实战:误判病例分析

2023-10-18 10:10

本文主要是介绍第33步 机器学习分类实战:误判病例分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

填最后一个坑,如何寻找误判的病例。

之前我们在介绍AUC的时候,提到了两个函数:predict和predict_proba,复习一下:

auc_test = roc_auc_score(y_test, y_testprba) 

roc_auc_score的参数呢,包括两个:y_test是实际值,y_testprba是预测的概率(注意,是概率,而不是分类,要和y_pred做区别),来看看代码:

y_pred = classifier.predict(X_test)
y_testprba = classifier.predict_proba(X_test)[:,1] 

来,一个是predict,一个是predict_proba,输出的如图所示。

一目了然了吧,就是根据0.5为阈值进行分类的。

所以呢,可以根据y_pred和y_true就可以判断是所谓的误诊(y_true是0,而y_pred是1)还是漏诊(y_true是1,而y_pred是0)。

具体操作在excel即可完成,最重的就是筛选出误诊和漏诊的病例:

我们还是用Xgboost做例子(测试集):

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset = pd.read_csv('X disease code fs.csv')
X = dataset.iloc[:, 1:14].values
Y = dataset.iloc[:, 0].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.30, random_state = 666)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
import xgboost as xgb
param_grid=[{'n_estimators':[35],'eta':[0.1],'max_depth':[1],'gamma':[0],'min_child_weight':[5],'max_delta_step':[1],'subsample':[0.8],'colsample_bytree':[0.8],'colsample_bylevel':[0.8],'reg_lambda':[9],'reg_alpha':[5],},]
boost = xgb.XGBClassifier()
classifier = xgb.XGBClassifier()
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(boost, param_grid, n_jobs = -1, verbose = 2, cv=10)      
grid_search.fit(X_train, y_train)    
classifier = grid_search.best_estimator_  
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
y_testprba = classifier.predict_proba(X_test)[:,1] 
y_trainpred = classifier.predict(X_train)
y_trainprba = classifier.predict_proba(X_train)[:,1]

由于我们演示的是测试集,所以关注y_pred和y_test:

 接着,我们需要在运行一次代码:

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.30, random_state = 666)

我们需要获得y_text对应的X_test,而上述那一串代码的X_test的数据已经被归一化了,没法使用,我们需要的是原始数据:

然后,我们把y_pred和y_test以及X_test复制到新的excel(注意:不要搞乱顺序,目前顺序是一一对应的)

 不放心的话,可以调出原始数据,稍微对应一下是否做到一一对应了,比如:

对应得上,不放心就再找几个做校对。

接着,新开一列,用真实值减去预测值,那么误诊(真实是0,而预测是1)就是-1,漏诊(真实是1,而预测是0)就是1。使用筛选功能,分别把它们提取出来,做你想做的分析,水几个图还是OK的。

 终于,花了32期,把机器学习分类讲完了,洋洋洒洒4-5万字,有种写博士毕业论文的感觉了,希望对大家有用,也欢迎进行技术探讨。特别是Xgboost、LightGBM还有Catboost,以及各种Stacking模型,掌握的还是不够深入。

这篇关于第33步 机器学习分类实战:误判病例分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231886

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性