随笔 - 384  文章 - 0  评论 - 35  阅读 - 142万

CatBoost 使用

一些有用的变量,比如省份或者是货物的编号等,涵盖这比较多信息,我们就可以使用CatBoost ,下面主要讲述一下CatBoost  的用法

一、使用CatBoost  内置数据。

首先导入数据

复制代码
import pandas as pd
import catboost
print(catboost.__version__)  #0.26.1
from catboost import CatBoostClassifier

from catboost import datasets
train_df, test_df = datasets.amazon() # nice datasets with categorical features only :D
train_df.shape, test_df.shape  #((32769, 10), (58921, 10))

tmp = pd.DataFrame()
tmp['英文名称'] = ['ACTION', 'RESOURCE', 'MGR_ID', 'ROLE_ROLLUP_1', 'ROLE_ROLLUP_2',
       'ROLE_DEPTNAME', 'ROLE_TITLE', 'ROLE_FAMILY_DESC', 'ROLE_FAMILY',
       'ROLE_CODE']

tmp['中文名称'] = ['操作','资源','经理标识','角色汇总1 ','角色汇总2 ', '角色_部门名称','角色_职位','角色_家庭_DESC ','角色_家庭', '角色代码']
复制代码

字段如下:

 查看数据

 总体来说,ACTION 是target, 其余的变量即是看着都是一些数据,但是这些都是编号,也就是类别型数据,下面看看这些类别型数据有多少种类别

 

 

 这些变量的类别还是很多的,如果做独热编码,将会引起维度奔溃。

 

二、开始构造模型。

首先划分训练集测试集

y = train_df['ACTION']
X = train_df.drop(columns='ACTION') # or X = train_df.drop('ACTION', axis=1)
X_test = test_df.drop(columns='id')


SEED = 1
from sklearn.model_selection import train_test_split
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.25, random_state=SEED)

指定类别型变量

cat_features = list(range(X.shape[1]))
print(cat_features)  #[0, 1, 2, 3, 4, 5, 6, 7, 8]

开始训练

复制代码
%%time

params = {'loss_function':'Logloss',
          'eval_metric':'AUC',
          'cat_features': cat_features,
          'early_stopping_rounds': 200,
          'verbose': 200,
          'random_seed': SEED
         }
cbc_2 = CatBoostClassifier(**params)
cbc_2.fit(X_train, y_train, 
          eval_set=(X_valid, y_valid), 
          use_best_model=True, 
          plot=True
         );
复制代码

 

 

 尝试一下cat_features 不适用位置索引,而是使用列名

复制代码
cat_features = list(X.columns)


%%time

params = {'loss_function':'Logloss',
          'eval_metric':'AUC',
          'cat_features': cat_features,
          'early_stopping_rounds': 200,
          'verbose': 200,
          'random_seed': SEED
         }
cbc_2 = CatBoostClassifier(**params)
cbc_2.fit(X_train, y_train, 
          eval_set=(X_valid, y_valid), 
          use_best_model=True, 
          plot=True
         );
复制代码

 

 但是,但是,有些版本的cat_features 是不能使用列名训练,具体原因还未知。

 https://www.kaggle.com/code/mitribunskiy/tutorial-catboost-overview

posted on   小小喽啰  阅读(423)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-04-15 sympy库的使用(五)阶乘,微分,积分,极限等
2021-04-15 sympy库的使用(四)指数和对数
2021-04-15 sympy库的使用(三)幂函数
2021-04-15 sympy库的使用(二)三角函数
2021-04-15 sympy库的使用(一)定义和表达式简化等等
2021-04-15 机器学习中的Bias(偏差)和Variance(方差)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示