【AutoGluon_02】更优精度与特征重要性

news2024/11/16 13:35:22

【AutoGluon_02】更优精度与特征重要性

  • 1、优化改良版autogluon
  • 2、快速使用
  • 3、模型训练
  • 4、更高的输出精度
  • 5、模型评估
    • (1)模型排行榜
    • (2)输出各特征重要性
    • (3)模型性能可视化
  • 6、输出最终模型
  • 7、预测

除了autogluon最基础的模型之外,还可以对其进行调参等操作,这样跑出来可以有更高的准确率。

1、优化改良版autogluon

参数设置:

(参数设置)增加训练时间的一般都会增加输出精度
time_limit : 模型训练的最长等待时间,通常不设置
eval_metric: 指定评价指标例如,AUC还是精度等
‘f1’ (for binary classification), 
‘roc_auc’ (for binary classification), 
‘log_loss’ (for classification), ‘
‘mean_absolute_error’ (for regression),
‘median_absolute_error’ (for regression)
presets: 默认为’medium_quality_faster_train’,可以按medium_quality good_quality high_quality best_quality的顺序测试,找到适合的模型。损失了精度但是速度比较快。要是设置为“best_quality”,则会做bagging和stacking以提高性能。
presets=‘best_quality’:利用bagging/staking,准确度高但是运行时间长。
presets=‘medium_quality’:选择的算法运行时间较短,但准确率会差一点。
折中的办法就是:presets=[‘good_quality’, ‘optimize_for_deployment’]
Tuning_data: 这个作为验证集数据的参数,官网建议如果没有特别的理由时不加,让机器自己从训练集中分割出一小部分验证集,这边值得一提的是机器还能自己根据数据使用分层抽样等,可以说是非常人性化了。
holdout_frac:这个参数指定从训练集出分割出多少比例的验证集
num_bag_folds = 5-10,这个应该是类似k倍交叉验证,会增加训练时间
num_stack_levels = 1-3,stacking 水平
num_bag_sets:减少方差,但是增加训练时间

优化改良版代码:

import pandas as pd
from sklearn.model_selection import train_test_split
from autogluon.tabular import TabularDataset, TabularPredictor

df = TabularDataset('test.csv')
label = "label"
X=df
y=df[label]

#划分数据集并使用autogluon自动训练,  可根据需要指定预测方式problem_type=‘regression’: 回归问题;‘classfication’: 分类问题
train_x,test_x,train_y,test_y=train_test_split(X,y,test_size=0.2,random_state=0)
predictor = TabularPredictor(label= label).fit(train_data=train_x,ag_args_fit={'num_gpus':-1})
# predictor = tabular.TabularPredictor(label='Label_mL',problem_type='regression').fit(train_data=train_x,ag_args_fit={'num_gpus':-1})

#使用高质量模型
# time_limit = 60  # for quick demonstration only, you should set this to longest time you are willing to wait (in seconds)
# metric = 'roc_auc'
# predictor = TabularPredictor(label= label, eval_metric=metric).fit(train_data=train_x, time_limit=time_limit, presets='best_quality',ag_args_fit={'num_gpus':-1})

test_data = TabularDataset(test_x)
leaderboard = predictor.leaderboard(test_data)   #预测结果看板

#删除标签列作为测试集 ; 也可以选择一个新的需要预测的数据
test_data_t=test_x.drop(labels=[ label],axis=1)
# df2 = TabularDataset('能力值_.csv')
# test_data_t = df2.drop(labels=[ label],axis=1)

#方式1:使用指定最优模型输出结果
# pred_y=predictor.predict(test_data_t,model='XGBoost')
#方式2:使用默认predictor模型输出结果
pred_y=predictor.predict(test_data_t)
print(pred_y) #打印预测结果
#预测发生的概率
proba_y=predictor.predict_proba(test_data_t)
print(proba_y)

#结果输出
test_x["pred_y"] = pred_y
test_x
# df["proba_y"] = proba_y[1]
# df2.to_csv("result2.csv",encoding="utf_8_sig")

2、快速使用

autogluon自动寻找最优模型:

from autogluon.tabular import TabularDataset, TabularPredictor
train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/In
c/train.csv')
test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/In
c/test.csv')
predictor = TabularPredictor(label='class').fit(train_data=train_data)
predictions = predictor.predict(test_data)
score = predictor.evaluate(test_data)

3、模型训练

  • 将数据转换为 autogluon 中所需格式,并定义预测标签,不考虑时间成本追求最优模型,5择交
    叉检验、模型融合
  • 使⽤CPU训练了⼤约20分钟,可以看到最优模型为 WeightedEnsemble_L3
from autogluon.tabular import TabularDataset, TabularPredictor
train_data = TabularDataset(df_train)
# 预测标签
label = 'satisfaction_level'
# 模型保存⽂件名
save_path = 'agModels-predictClass'
# 建⽴预测模型,verbosity(0~4),默认为2就好
predictor = TabularPredictor(label=label,path=save_path,verbosity=0)
# presets='best_quality'不考虑时间成本,追求最好模型
predictor.fit(train_data,presets='best_quality',num_bag_folds=5,num_bag_se
ts=1,num_stack_levels=1)
# 输出模型表现
predictor.leaderboard(silent=True)

在这里插入图片描述

轻量级超参数:

predictor_light = TabularPredictor(label=label, eval_metric=metric).fit(tra
in_data, hyperparameters='very_light', time_limit=30)
excluded_model_types = ['KNN', 'NN_TORCH', 'custom']
predictor_light = TabularPredictor(label=label, eval_metric=metric).fit(tra
in_data, excluded_model_types=excluded_model_types, time_limit=30)

4、更高的输出精度

time_limit = 60 # for quick demonstration only, you should set this to lon
gest time you are willing to wait (in seconds)
metric = 'roc_auc' # specify your evaluation metric here
predictor = TabularPredictor(label, eval_metric=metric).fit(train_data, tim
e_limit=time_limit, presets='best_quality')
predictor.leaderboard(test_data, silent=True)

在这里插入图片描述

使用GPU训练:

from autogluon.tabular import TabularPredictor
predictor = TabularPredictor(label=label).fit(
 train_data=train_data,
 hyperparameters=hyperparameters,
 feature_metadata=feature_metadata,
 # presets = 'best_quality',
 time_limit=0.2*3600,
 ag_args_fit={'num_gpus':-1})
# # by default, all available gpus are used by AutoMM
# predictor.fit(hyperparameters={"env.num_gpus": -1})
# # use 1 gpu only
# predictor.fit(hyperparameters={"env.num_gpus": 1})

5、模型评估

(1)模型排行榜

predictor.leaderboard(test_data, silent=True)#输出排⾏榜
predictor.leaderboard(extra_info=True, silent=True)#输出拓展的每个算法运⾏数据的排⾏榜

(2)输出各特征重要性

# 删除其余模型(减少内存开销)
predictor.delete_models(models_to_keep='best')
# 输出最优模型
predictor.get_model_best()
# 输出特征重要程度
predictor.feature_importance(train_data)

在这里插入图片描述

(3)模型性能可视化

返回拟合过程中的各个指标:时间、精度等

results = predictor.fit_summary(show_plot=True)

在这里插入图片描述

6、输出最终模型

直接输出6种评估指标,以及预测结果

perf = predictor.evaluate_predictions(y_true=y_test, y_pred=y_pred, auxilia
ry_metrics=True)# 结果评估

在这里插入图片描述
输出指定值,准确率、召回率、F1值

7、预测

查看模型信息:

predictor.problem_type # 查看预测类型,即回归还是分类
predictor.feature_metadata # 数据标签列的数据类型
predictor.features() # 特征
predictor.get_model_best() # 输出表现最好的模型

导⼊测试数据集, autogluon 会⾃动使⽤最优模型进⾏预测:

# 导⼊预测数据
test_data = TabularDataset(df_test)
# 导⼊模型
predictor = TabularPredictor.load(save_path)
# 得到预测值
y_pred = predictor.predict(test_data)
y_pred
#预测发⽣的概率
proba_y=predictor.predict_proba(test_data_t)
print(proba_y)

当我们调⽤时,AutoGluon 会⾃动使⽤ 在验证数据上显示最佳性能的模型(即 加权系综)。相反,我们
可以指定⽤于哪个模型 像这样的预测:predict()

predictor.predict(test_data)
predictor.predict(test_data, model='LightGBM')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scala的trait和extend代码运用实战Demo例子

1、概述 在Scala中,trait是一种特殊的概念,它类似于Java中的接口。trait可以定义方法和字段,但是不能实例化。类可以扩展trait,从而获得trait中定义的方法和字段。 在Scala中,extend关键字用于扩展类或特质。当一个类…

2.playbook剧本

文章目录 playbook剧本创建剧本运行剧本定义和引用变量指定远程主机sudo切换用户when条件判断剧本格式迭代with_itemswith_listwith_flattenedwith_togetherwith_cartesianwith_nested Templates模块tags模块 playbook剧本 playbooks 本身由以下各部分组成 Tasks:任…

基于javeSprict的WebAPI详解

一、前言 作为后端开发,前端其实只需要了解一些就可以了,不需要了解多么深入。在前面我们已经学习了ECMAScript:的基础语法部分,还有DOM API和BOM API需要学习。 DOM API主要负责操作页面结构。 所有的WebAPI可以参考下面这个网址里面的信息…

高清视频制作GIF怎么操作?一个工具在线完成视频转GIF

一段视频为了方便传输分享想要做成GIF动画的时候要怎么操作呢?很简单,只需要一款专业的GIF在线制作工具-GIF中文网,使用视频转GIF(https://www.gif.cn/)功能,上新MP4格式视频,能够快速制作1分钟…

arm neon/fpu/mfloat

neon官网介绍: Arm Neon technology is an advanced Single Instruction Multiple Data (SIMD) architecture extension for the A-profile and R-profile processors. Neon technology is a packed SIMD architecture. Neon registers are considered as vectors of elements …

【达哥讲网络】第3集:数据交换的垫基石——二层交换原理

专业的网络工程师在进行网络设计时,会事先规划好不同业务数据的转发路径,一方面是为了满足用户应用需求,另一方面是为了提高数据转发效率、充分利用各设备/各链路的硬件或带宽资源。在进行网络故障排除时,理顺各路数据的转发路径也…

Android 开发代码规范

一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如,tab缩进4个空格,或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…

C++笔记之++i和i++是原子操作吗?

C笔记之i和i是原子操作吗? code review! 文章目录 C笔记之i和i是原子操作吗?1.i是原子操作吗?2.i是原子操作吗?3.前置递增和后置递增 1.i是原子操作吗? 2.i是原子操作吗? 3.前置递增和后置递增

绝美!轮到AI写真爆火了!18种AI视频制作教程;Llama 2微调的极速指南;Nijijourney官方AI绘画课 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 摄影写真面临AI技术洗牌,一键生成杂志大片的时代来了 软件:midjourney & Stable Diffusion 模型&#xff…

Appium+python自动化(三十四)- 有图有真相,很美很精彩 - 屏幕截图和Android APP类型简介

简介 在实际自动化项目运行过程中,很多时候App可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏。从而达到一种“有图有真相”的效果。 截图方法 方法1 save_screenshot() 该方法直接保存当前…

传统计算机视觉

传统计算机视觉 计算机视觉难点图像分割基于主动轮廓的图像分割基于水平集的图像分割交互式图像分割基于模型的运动分割 目标跟踪基于光流的点目标跟踪基于均值漂移的块目标跟踪基于粒子滤波的目标跟踪基于核相关滤波的目标跟踪 目标检测一般目标检测识别之特征一般目标检测识别…

【深度学习】生成对抗网络Generative Adversarial Nets

序言 本文是GAN网络的原始论文,发表于2014年,我们知道,对抗网络是深度学习中,CNN基础上的一大进步; 它最大的好处是,让网络摆脱训练成“死模型”到固定场所处去应用,而是对于变化的场景&#xf…

【小梦C嘎嘎——启航篇】类和对象(上篇)

【小梦C嘎嘎——启航篇】类和对象(上篇)😎 前言🙌什么是面向过程?什么是面向对象?什么是类和对象类中的访问权限属性类的大小计算this 指针构造函数析构函数 总结撒花💞 😎博客昵称&…

自动化测试——APP测试

一、环境配置 1、安装jdk 配置环境变量 2、Android SDK 环境安装 3、Appium Server安装 4、模拟器安装 5、安装appium-python-client Python第三方库 二、APP自动化测试原理 三、Desired Capabilites——APPium自动化配置项 1、设置参数 2、操作系统 3、选择版本 4、设备名称…

LeetCode 1857. Largest Color Value in a Directed Graph【拓扑排序,动态规划】困难

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

【LeetCode】148.排序链表

题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5]示例 3&#xff1…

Go 下载安装教程

1. 下载地址:The Go Programming Language (google.cn) 2. 下载安装包 3. 安装 (1)下一步 (2)同意 (3)修改安装路径,如果不修改,直接下一步 更改后,点击下一…

软件测试/测试开发丨Selenium环境安装与使用

Selenium 官方网站: www.selenium.dev/ 简介: 用于web浏览器测试的工具;支持的浏览器包括IE,Firefox,Safari,Chrome,Edge等;使用简单,可使用Java,Python等…

InnoDB引擎底层逻辑讲解——逻辑存储结构

逻辑存储结构架构事务原理MVCC 1.逻辑存储结构 InnoDB逻辑存储结构图 mysql数据文件存储位置(linux系统) cd /var/lib/mysql一个mysql实例中有多个表空间,我们切换到某一个特定的数据库如itcast数据库,每个ibd文件都是一个表空间, cd it…

使用pikachu管理工具下的XSS后台进行实战

写在前面的重要提示: Attention:技术没有好坏之分,关键在于使用技术的人或组织。网络安全技术是一把双刃剑 – 作为网络安全人,虽然无法控制头上的帽子是否会变绿,但能控制不让它变黑;无论我们在物质上面对…