autoGluon-教程3-在kaggle竞赛中的应用

写在前面

这篇接上一篇教程2,终于要看到autogluon在竞赛中的应用了。

安装必要的模块和文件

1.模块

pip install kaggle 

2.文件

下载API文件,通过在kaggle个人账号,点击头像在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后会得到一个kaggle.json文件,如果你是用kaggle cli 工具时,且你的电脑是Linux,OSX或其他基于UNIX系统时,把这个文件放置在~/.kaggle/kaggle.json ,windows则放置在C:\Users.kaggle\kaggle.json。不使用客户端的时候就无所谓了

下载数据

可以通过命令行下载数据

kaggle competitions download -c [COMPETITION]
kaggle competitions download -c ieee-fraud-detection

这边的[COMPETITION]替换为项目名,我这边将其改成了ieee-fraud-detection,但是下载过程报了403 error,也就是说没有kaggle服务器理解了我的这次下载请求,但由于我没有权限访问而拒绝了。查看了下我的json文件和放置位置,正常,折腾了一下下没有解决,算了改为手动下载吧。
原文件信息如下(五个子文件):
在这里插入图片描述

读取数据

在做实践中,改下自己的目录directory即可

import pandas as pd
import numpy as np
from autogluon.tabular import TabularPredictor

directory = '~/github/ieee-fraud-detection/'  # directory where you have downloaded the data CSV files from the competition
label = 'isFraud'  # name of target variable to predict in this competition
eval_metric = 'roc_auc'  # Optional: specify that competition evaluation metric is AUC
save_path = directory + 'AutoGluonModels/'  # where to store trained models

train_identity = pd.read_csv(directory+'train_identity.csv')
train_transaction = pd.read_csv(directory+'train_transaction.csv')

因为训练集包含多个csv文件,所以我们需要将其合并成一个大的csv文件以便后面的AutoGluon语句调用,这边官网也给出了代码。

train_data = pd.merge(train_transaction, train_identity, on='TransactionID', how='left')

简单的合并命令,第一次学到类似的命令还是从成哥的数据库课程学到的,on代表根据那个列名称进行合并,how代表连接方式,表示的是主要以左边还是以右边的数据库为准,或者二者兼容的,具体可查阅命令详情。

训练模型

这边其实跟之前的教程变化不大,但是就是time_limit设置的大了点

predictor = TabularPredictor(label=label, eval_metric=eval_metric, path=save_path, verbosity=3).fit(
    train_data, presets='best_quality', time_limit=3600
)

results = predictor.fit_summary()

训练过程

在这里插入图片描述
在这里插入图片描述
训练一万轮,但是大约在700多就迭代停止了,因为实在是太慢了,我都看了n个冰冰的视频了,程序还没跑完我就手动停止了,哈哈哈。在这里插入图片描述
快速训练

subsample_size = 500  # subsample subset of data for faster demo, try setting this to much larger values
train_data = train_data.sample(n=subsample_size, random_state=0)
print(train_data.head())
predictor = TabularPredictor(label=label, eval_metric=eval_metric, path=save_path, verbosity=3).fit(
    train_data, presets='best_quality'
)

评估模型效果

测试集

测试集同样做与训练集一致的操作,因为训练集的列名和测试集的列名有着不一样,是id-10与id_10的区别,所以列名做了个修改

test_identity = pd.read_csv(directory+'test_identity.csv')
test_transaction = pd.read_csv(directory+'test_transaction.csv')
test_data = pd.merge(test_transaction, test_identity, on='TransactionID', how='left')  # same join applied to training files
a = [i.replace("-","_") for i in test_data.columns]
subsample_size = 500  # subsample subset of data for faster demo, try setting this to much larger values
test_data = test_data.sample(n=subsample_size, random_state=0)


y_predproba = predictor.predict_proba(test_data)
y_predproba.head(5)  # some example predicted fraud-probabilities

在这里插入图片描述

预测的正类是什么

predictor.positive_class

在这里插入图片描述

预测的分类时

predictor.class_labels  # classes in this list correspond to columns of predict_proba() output

在这里插入图片描述

预测分类的概率,且指指定正类

y_predproba = predictor.predict_proba(test_data, as_multiclass=False)

准备提交材料

submission = pd.read_csv(directory+'sample_submission.csv')
submission['isFraud'] = y_predproba
submission.head()
submission.to_csv(directory+'my_submission.csv', index=False)

提交结果

kaggle competitions submit -c ieee-fraud-detection -f sample_submission.csv -m "my first submission"

写在最后

大概关于在kaggle项目中autoGluon的应用就是大致如此了,感觉跟我想的不大一样呀,我以为的是比较高大上,怎么一到我这儿就这么平民的感觉了。唉,果然还是太菜了么。

后面的训练

本来想要用全部样本训练的,然后只训练一个分类器,但是没办法还是显示内存不够

nn_options = {  # specifies non-default hyperparameter values for neural network models
    'num_epochs': 10
}
hyperparameter_tune_kwargs = { 
    'num_trials': num_trials,
    'scheduler' : 'local',
    'searcher': search_strategy,
}
num_trials = 5  # try at most 5 different hyperparameter configurations for each type of model
search_strategy = 'auto'  
hyperparameters = { 
                   'NN': nn_options
                  } 
predictor = TabularPredictor(label=label, eval_metric=eval_metric, path=save_path, verbosity=3).fit(
    train_data, presets='good_quality_faster_inference_only_refit',
    hyperparameters=hyperparameters, hyperparameter_tune_kwargs=hyperparameter_tune_kwargs
)
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值