pycaret模型分析
1、解释模型
解释复杂模型在机器学习中至关重要。 模型可解释性通过分析模型真正认为的重要内容来帮助调试模型。 在PyCaret中解释模型就像编写interpret_model一样简单。 该函数将训练有素的模型对象和图的类型作为字符串。 解释是基于SHAP(SHapley Additive exPlanations)实现的,并且仅适用于基于树的模型。 该函数仅在pycaret.classification和pycaret.regression模块中可用。
from pycaret.datasets import get_data
diabetes = get_data('diabetes')
# Importing module and initializing setup
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')
# creating a model
xgboost = create_model('xgboost')
# interpreting model
interpret_model(xgboost)
interpret_model(xgboost, plot = 'correlation')
interpret_model(xgboost, plot = 'reason', observation = 10)
2、分配模型
在执行无监督实验(例如聚类,异常检测或自然语言处理)时,您通常会对模型生成的标签感兴趣,例如 数据点所属的群集标识是“群集”实验中的标签。 同样,哪个观察值是异常值,是“异常检测”实验中的二进制标记,而哪个主题文档属于自然语言处理实验中的标记。 这可以在PyCaret中使用assign_model函数实现,该函数将训练有素的模型对象作为单个参数。 此功能仅在pycaret.clustering,pycaret.anomaly和pycaret.nlp模块中可用。
# Importing dataset
from pycaret.datasets import get_data
jewellery = get_data('jewellery')
# Importing module and initializing setup
from pycaret.clustering import *
clu1 = setup(data = jewellery)
# create a model
kmeans = create_model('kmeans')
# Assign label
kmeans_results = assign_model(kmeans)
# Importing dataset
from pycaret.datasets import get_data
anomalies = get_data('anomalies')
# Importing module and initializing setup
from pycaret.anomaly import *
ano1 = setup(data = anomalies)
# create a model
iforest = create_model('iforest')
# Assign label
iforest_results = assign_model(iforest)
# Importing dataset
from pycaret.datasets import get_data
kiva = get_data('kiva')
# Importing module and initializing setup
from pycaret.nlp import *
nlp1 = setup(data = kiva, target = 'en')
# create a model
lda = create_model('lda')
# Assign label
lda_results = assign_model(lda)
3、校准模型
在进行分类实验时,您通常不仅希望预测类别标签,而且还希望获得预测的可能性。这种可能性使您充满信心。某些模型可能会使您对类概率的估计不佳。校准良好的分类器是概率分类器,其概率输出可以直接解释为置信度。在PyCaret中校准分类模型就像编写calibrate_model一样简单。这些功能采用经过训练的模型对象和通过方法参数进行校准的方法。方法可以是对应于Platt方法的“ Sigmoid”,也可以是非参数方法的“等渗”。不建议将等渗校准用于校准样品太少(<< 1000),因为它倾向于过拟合。此函数返回一个表格,其中包含经过分类验证指标(准确性,AUC,召回率,精度,F1和Kappa)的k倍交叉验证得分以及受过训练的模型对象。 可以使用calibrate_model函数中的fold参数定义折叠次数。默认情况下,折叠倍数设置为10。默认情况下,所有指标均四舍五入到4位小数,可以使用calibrate_model中的round参数进行更改。 此功能仅在pycaret.classification模块中可用。
# Importing dataset
from pycaret.datasets import get_data
diabetes = get_data('diabetes')
# Importing module and initializing setup
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')
# create a model
dt = create_model('dt')
# calibrate a model
calibrated_dt = calibrate_model(dt)
4、优化阈值
在分类问题中,false positives 几乎永远不会与false negatives相同。这样,如果您正在优化类型1和类型2错误产生不同影响的业务问题,则可以通过分别定义 true positives, true negatives, false positives and false negatives损失 来优化分类器的概率阈值,以优化自定义损失函数。在PyCaret中优化阈值就像编写optimize_threshold一样简单。它需要一个训练有素的模型对象(一个分类器),并且损失函数仅由真阳性,真阴性,假阳性和假阴性表示。此函数返回一个交互图,其中损失函数(y轴)表示为x轴上不同概率阈值的函数。然后显示一条垂直线,代表该特定分类器的概率阈值的最佳值。然后,可以将使用optimize_threshold优化的概率阈值用于predict_model函数,以使用自定义概率阈值生成标签。通常,所有分类器都经过训练可以预测50%的阳性分类。 此功能仅在pycaret.classification模块中可用。
# Importing dataset
from pycaret.datasets import get_data
credit = get_data('credit')
# Importing module and initializing setup
from pycaret.classification import *
clf1 = setup(data = credit, target = 'default')
# create a model
xgboost = create_model('xgboost')
# optimize threshold for trained model
optimize_threshold(xgboost, true_negative = 1500, false_negative = -5000)
- android viewgroup事件分发机制
- Rafy 领域实体框架示例(1) - 转换传统三层应用程序
- android view事件分发机制
- Rafy 领域实体框架演示(2) - 新功能展示
- ormlite介绍一
- 从Encoder到Decoder实现Seq2Seq模型(算法+代码)
- 【Java SE】Java NIO系列教程(六) Selector
- Rafy 领域实体框架演示(3) - 快速使用 C/S 架构部署
- Rafy 领域实体框架演示(4) - 使用本地文件型数据库 SQLCE 绿色部署
- spring 的OpenSessionInViewFilter简介
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- 【Java SE】Java NIO系列教程(三) Buffer
- android混淆
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 什么是事务隔离
- Python|Pandas的常用操作
- C++设计模式笔记(01)-设计模式的介绍
- 【DB笔试面试842】在Oracle中,如何启动Oracle数据库的监听日志?
- 【揭秘】C语言类型转换时发生了什么?
- JUC学习之8锁现象
- TensorFlow惊现大bug?网友:这是逼着我们用PyTorch啊!
- 机器学习|用Q-Learning走迷宫
- C++设计模式笔记(03-02) - Template Method_模板方法(下)
- 从零开始学习华为路由交换 | OSPF修改计时器
- 【没落的985/211】Python爬取知乎8万字回答进行高校分析
- LinkedBlockingQueue源码学习
- 三歪吐血总结了各个中间件是如何实现持久化的
- ThreadPoolExecutor源码学习
- Docker六脉神剑(四) 使用Docker-Compose进行服务编排搭建lnmp环境