精华内容
下载资源
问答
  • catboost分类
    千次阅读
    2019-01-04 16:18:24

    catboost参数解析

    iterations : 最大树数
    od_type : 过拟合检查类型
    od_wait:在最小化损失函数后的迭代次数
    max_depth : 最大深度
    learning_rate : 学习率
    l2_leaf_reg : L2正则参数
    fold_len_multiplier : folds长度系数。设置大于1的参数,在参数较小时获得最佳结果。默认2。
    loss_function : 损失函数

    import operator
    cates_idx = [X_tr.columns.values.tolist().index(c) for c in nominal_cate_cols]
    def verbose_feature_importance_cat(cls, X_tr):
    	cat_feature_importance = {
             X_tr.columns.values.tolist()[idx]: score
             for idx, score in enumerate(cls.feature_importances_)
         }
         cat_feature_importance = sorted(cat_feature_importance.items(), 
                                         key=operator.itemgetter(1), 
                                         reverse=False)
         print(80 * '*')
         print(31 * '*' + 'Feature Importance' + 31 * '*')
         print(80 * '.')
         for feature, score in reversed(cat_feature_importance):
             print(".%50s => %9.5f" % (feature, score))
         print(80 * '.')
         feature_score = pd.DataFrame(cat_feature_importance, columns=['Feature','Score'])
         plt.rcParams["figure.figsize"] = (11, 12)
         ax = feature_score.tail(50).plot('Feature', 'Score', kind='barh', color='b')
         ax.set_title("Catboost Feature Importance Ranking", fontsize=8)
         ax.set_xlabel('')
         rects = ax.patches
    
         labels = feature_score.tail(50)['Score'].round(2)
         for rect, label in zip(rects, labels):
             width = rect.get_width()
             ax.text(width + 0.2,rect.get_y()+0.02, label, ha='center', va='bottom')
         plt.show()
         
    def fit_cat(X_tr, y_tr, X_va, y_va, cates_idx):
         print('Fitting CatBoostClassifier ...')
         cls = cb.CatBoostClassifier(
             iterations=2000,
             od_type='Iter',
             od_wait=120,
             max_depth=8,
             learning_rate=0.02,
             l2_leaf_reg=9,
             random_seed=2018,
             metric_period=50,
             fold_len_multiplier=1.1,
             loss_function='Logloss',
             logging_level='Verbose')
         fine_model = cls.fit(X_tr, y_tr, eval_set=(X_va, y_va), cat_features=cates_idx)
         verbose_feature_importance_cat(fine_model, X_tr)
         return fine_model
    cat = fit_cat(X_tr, y_tr, X_va, y_va, cates_idx)                             
    
    更多相关内容
  • Python实现Catboost分类模型(CatBoostClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

    1.项目背景

    CatBoost提供最先进的结果,在性能方面与任何领先的机器学习算法相比都具有竞争力。CatBoost是一种基于对称决策树(oblivious trees)为基学习器实现的参数较少、支持类别型变量和高准确性的GBDT框架,主要解决的痛点是高效合理地处理类别型特征,这一点从它的名字中可以看出来,CatBoost是由Categorical和Boosting组成。CatBoost无需对数据特征进行任何显式的预处理就可以将类别转换为数字。CatBoost使用关于分类特征组合以及分类和数字特征组合的各种统计信息将分类值转换为数字。

    本项目使用CatBoostClassifier来解决分类问题。

    2.数据获取

    本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

    数据详情如下(部分展示):

    3.数据预处理

    3.1 用Pandas工具查看数据

    使用Pandas工具的head()方法查看前五行数据:

    从上图可以看到,总共有9个字段。

    关键代码:

    3.2缺失值统计

    使用Pandas工具的info()方法统计每个特征缺失情况:

     

    从上图可以看到,数据不存在缺失值,总数据量为1000条。

    关键代码:

    3.3变量描述性统计分析

    通过Pandas工具的describe()方法来来统计变量的平均值、标准差、最大值、最小值、分位数等信息:

    关键代码如下:

    4.探索性数据分析

    4.1 y变量分类柱状图

    用Pandas工具的value_counts().plot()方法进行统计绘图,图形化展示如下:

     从上面两个图中可以看到,分类为0和1的样本,数量基本一致。

    4.2 y变量类型为0 x1变量分布直方图

    通过Matpltlib工具的hist()方法绘制直方图:

    从上图可以看出,x1变量成正态分布,主要集中在-2~0之间。

    4.3 相关性分析

    通过Pandas工具的corr()方法和seaborn工具的heatmap()方法绘制相关性热力图:

    从图中可以看到,正数为正相关,负数为负相关,绝对值越大相关性越强。

    5.特征工程

    5.1 建立特征数据和标签数据

    y为标签数据,除 y之外的为特征数据。关键代码如下:

     

    5.2 数据集拆分

    数据集集拆分,分为训练集和测试集,80%训练集和20%测试集。关键代码如下:

    6.构建CatBoost分类模型

    主要使用CatBoostClassifier算法,用于目标分类。

    6.1模型调优:应用网格搜索寻找最优参数值

    使用网格搜索算法来寻找最优的参数值:

    关键参数代码:

     6.2模型最优参数

    7.模型评估

    7.1评估指标及结果

    评估指标主要包括准确率、查准率、召回率、F1分值等等。

    从上表可以看出,CatBoost分类模型比较优秀,效果非常好。

    关键代码如下:

    7.2 查看是否过拟合

    查看训练集和测试集的分数:

     

    通过结果可以看到,训练集分数和测试集分数基本相当,所以没有出现过拟合现象。

    关键代码:

    7.3 混淆矩阵

    CatBoost分类模型混淆矩阵:

     

    从上图可以看到,实际值为1 预测为0的有9个;实际值为0  预测为1的有6个;这些是预测错误的,总共15个,在可以接受的范围内。

    7.4 分类报告

    CatBoost分类模型分类报告:

    从上图可以看到,分类类型为0的F1分值为0.93;分类类型为1的F1分值为0.92;整个模型的准确率为0.93.

    7.5 ROC曲线 

     

    从上图可以看出AUC值为0.98,模型非常棒。

    8.结论与展望

    综上所述,本项目采用了CatBoost分类模型,最终证明了我们提出的模型效果良好。

    本次机器学习项目实战所需的资料,项目资源如下:

    项目说明:
    链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w 
    提取码:bcbp

    网盘如果失效,可以添加博主微信:zy10178083

    展开全文
  • catboost 分类实战

    千次阅读 2021-08-18 13:48:07
    # -*- coding: utf-8 -*- """ ...from catboost import CatBoostClassifier import pandas as pd from sklearn.model_selection import train_test_split from sklearn.metrics import f1_score from
    # -*- coding: utf-8 -*-
    """
    Created on Fri Aug  6 15:23:19 2021
    
    @author: 1
    """
    import pandas as pd
    
    from catboost import CatBoostClassifier
    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import f1_score
    from sklearn.metrics import accuracy_score
    import numpy as np
    from sklearn.metrics import confusion_matrix
    import matplotlib.pyplot as plt
    
    data = pd.read_csv('water_data.csv',index_col=0)
    data['TN'] = data['TN'].apply(pd.to_numeric, errors='coerce')
    data['TEMP'] = data['TEMP'].apply(pd.to_numeric, errors='coerce')
    data['COND'] = data['COND'].apply(pd.to_numeric, errors='coerce')
    data['TURB'] = data['TURB'].apply(pd.to_numeric, errors='coerce')
    
    data_train=data[:3600]
    data_test = data[3600:]
    
    X_train = data_train.iloc[:,:9]
    y_train = data_train['lable']
    
    X_validation = data_test.iloc[:,:9]
    y_validation = data_test['lable'] 
    
    
    #X_train, X_validation, y_train, y_validation = train_test_split(data.iloc[:,:-1],data.iloc[:,-1],test_size=0.2 , random_state=1234)
    
    categorical_features_indices = np.where(X_train.dtypes != np.float)[0]
    model = CatBoostClassifier(iterations=2000, 
                               depth=6,
                               cat_features=categorical_features_indices,
                               learning_rate=0.04,
                               loss_function='MultiClass',
                               logging_level='Verbose')
    model.fit(X_train,y_train,eval_set=(X_validation, y_validation),plot=True)
    
    
    y_pred = model.predict(X_validation)
    # 模型评价
    f1 = f1_score( y_pred,y_validation, average='macro')
    acc = accuracy_score(y_pred, y_validation)
    print('f1 : ', f1)
    print('accuracy : ', acc)
    print('finished')
    
    y_true = np.array(y_validation)
    d = np.c_[y_pred,y_true]
    
    # 特征重要度排序
    fea_ = model.feature_importances_
    fea_name = model.feature_names_
    plt.figure(figsize=(10, 10))
    plt.barh(fea_name,fea_,height =0.5)
    
    #混淆矩阵
    def plot_confusion_matrix(cm, savename, title='Confusion Matrix'):
    
        plt.figure(figsize=(12, 8), dpi=100)
        np.set_printoptions(precision=2)
    
        # 在混淆矩阵中每格的概率值
        ind_array = np.arange(len(classes))
        x, y = np.meshgrid(ind_array, ind_array)
        for x_val, y_val in zip(x.flatten(), y.flatten()):
            c = cm[y_val][x_val]
            if c > 0.001:
                plt.text(x_val, y_val, "%0.0f" % (c,), color='red', fontsize=15, va='center', ha='center')
        
        plt.imshow(cm, interpolation='nearest', cmap=plt.cm.binary)
        plt.title(title)
        plt.colorbar()
        xlocations = np.array(range(len(classes)))
        plt.xticks(xlocations, classes, rotation=90)
        plt.yticks(xlocations, classes)
        plt.ylabel('Actual label')
        plt.xlabel('Predict label')
        
        # offset the tick
        tick_marks = np.array(range(len(classes))) + 0.5
        plt.gca().set_xticks(tick_marks, minor=True)
        plt.gca().set_yticks(tick_marks, minor=True)
        plt.gca().xaxis.set_ticks_position('none')
        plt.gca().yaxis.set_ticks_position('none')
        plt.grid(True, which='minor', linestyle='-')
        plt.gcf().subplots_adjust(bottom=0.15)
        
        # show confusion matrix
        plt.savefig(savename, format='png')
        plt.show()
        
    classes = ['I', 'II', 'III', 'VI', 'V', 'IV']
    
    
    # 获取混淆矩阵
    cm = confusion_matrix(y_true, y_pred)
    plot_confusion_matrix(cm, 'confusion_matrix.png', title='confusion matrix')
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • CatBoostLSS-CatBoost扩展到概率预测 我们提出了一个的新框架,该框架可预测单变量响应变量的整个条件分布。特别是, CatBoostLSS可以对参数分布的所有矩进行建模,即均值,位置,比例和形状(LSS),而不仅仅是条件...
  • 提出通过综合学习粒子群算法(Comprehensive Learning Particle Swarm Optimization, CLPSO)优化CatBoost集成学习算法(CLPSO-CatBoost)的贷款风险预测方法, 该算法改善了全局搜索能力、避免了陷入容易陷入局部最优的...
  • CatBoost回归分类模型

    本案例使用 CatBoost 创建一个员工流失模型,该模型将预测您哪些员工将在提交辞职信之前辞职。

    在人力资源分析领域,数据科学家现在正在使用其人力资源部门的员工数据来预测员工流失率。预测员工流失的技术与零售商用于预测客户流失的技术非常相似。

    在这个项目中,我将向您展示如何使用 CatBoost 算法创建一个简单的员工流失模型来预测您的哪些员工最有可能离职,并确定可能导致他们离职的因。

    模块安装:pip3 install catboost
    数据集下载:

    链接:https://pan.baidu.com/s/1aVvbZvDvl1DLnXU2fG-BIA?pwd=pmyc 
    提取码:pmyc
    

    数据如下:
    在这里插入图片描述
    数据说明:
    ‘satisfaction_level’: 在 0 到 1 的范围

    展开全文
  • catboost介绍

    千次阅读 2021-09-05 15:50:30
    一、Catboost简介 全称:Gradient Boosting(梯度提升) + Categorical Features(类别型特征) 作者:俄罗斯的搜索巨头Yandex 官方地址 论文链接 | 项目地址  文档地址 视频 二、Catboost的特点  一般来说,...
  • CatBoost 原理及应用

    2022-07-10 00:15:25
    CatBoost(categorical boosting)是一种能够很好地处理类别型特征的梯度提升算法库。本文中,我们对 CatBoost 基本原理及应用实例做个详细介绍。后面小猴子还将针对其中几个重要特性做专门介绍,如 CatBoost 对类别...
  • 我们知道,CatBoost可以很好地处理类别型数据。然而,它还具有大量的训练参数,可以更好地对类别型特征进行预处理。本文中,小猴子将和大家一起学习如何使用这些参数处理类别型特征的。CatBoost是一个开放源码的梯度...
  • 点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文介绍GBDT系列的最后一个强大的工程实现模型——CatBoostCatBoost与XGBoost、LightGBM并称为GBDT框架下三大主流模型。CatBoost是俄罗斯...
  • 30 分钟看懂 CatBoost(Python代码)

    千次阅读 2022-02-27 22:58:27
    CatBoost和XGBoost、LightGBM并称为GBDT的三大主流神器,都是在GBDT算法框架下的一种改进实现。 正如其名字所说那样,CatBoost主要是在类别特征上的处理上做了很多的改进。 从用户使用角度来看,相比XGBoost和Light...
  • CatBoost是Yandex最近开发的一种开源机器学习算法。它可以很容易地与谷歌的TensorFlow和苹果的核心ML等深度学习框架集成。它可以处理各种数据类型,如音频、文本、图像(包括历史数据)。帮助解决当今企业面临的各种...
  • catboost原理

    千次阅读 多人点赞 2020-02-20 21:32:24
    文章目录概述原理类别型特征类别型特征的相关工作目标变量统计(Target Statistics)CatBoost处理Categorical features总结梯度偏差/预测偏移为什么会有梯度偏差?梯度偏差造成了什么问题?如何解决梯度偏差/预测...
  • 本文主要参考Battle of the Boosting Algos: LGB, XGB, Catboost,结果与原文有出入。 文章目录1. 对比标准1.1 数据集1.2 规则1.3 版本2. 结果2.1 准确率2.2 训练时间和预测时间2.3 可解释性2.3.1 特征重要性2.3.2 ...
  • Catboost-算法原理

    千次阅读 2022-03-15 12:09:20
    总结一下catboost关键的知识点 Target Statistics 常规处理类别特征的方法是one-hot,但是也可以将类别特征转化为和label相关的数值特征,也就是target statistics,最简单的方法就是计算概率值。(A target ...
  • pip install catboost 数据集 分类:MNIST(60000条数据784个特征),已上传CSDN 代码 import random import numpy as np import pandas as pd import matplotlib.pyplot as plt from catboost import ...
  • 在本文中,我们将仔细研究一个名为CatBoost的梯度增强库。在梯度提升中,预测是由一群弱学习者做出的。与为每个样本创建决策树的随机森林不同,在梯度增强中,树是一个接一个地创建的。模型中...
  • CatBoost算法模型

    2021-07-04 11:24:24
    CatBoost = Catgorical + Boost 高效的处理分类特征(categorical features),首先对分类特征做统计,计算某个分类特征(category)出现...CatBoost对于分类特征多的数据,可以高效的处理,过拟合程度小,效果好 ...
  • CatBoost 总结 介绍 在集成学习中,目标是用多种学习算法最成功地训练模型。Bagging方法是一种集成学习方法,将多个模型并行应用于同一数据集的不同子样本。Boosting是另一种在实践中经常使用的方法,它不是并行...
  • catboost原理、参数详解及python实例

    千次阅读 2019-09-02 10:23:33
    catboost 简介 优点: 1)它自动采用特殊的方式处理类别型特征(categorical features)。首先对categorical features做一些统计,计算某个类别特征(category)出现的频率,之后加上超参数,生成新的数值型特征...
  • MNIST & CatBoost保存模型并预测

    千次阅读 2020-02-20 20:27:30
    快速构建Catboost模型并进行预测
  • 背景: 解决问题:对类别特征使用catboost,观察其特征重要程度。 今天搜索catboost的实例应用的博客,该博客的样例、demo、以及特征重要度打印,这三个内容,都是我想使用的。可是,他收费了,碰见我这个身无分文的...
  • CatBoost详解
  • 资源分类:Python库 所属语言:Python 资源全名:catboost-0.14.2-cp35-none-win_amd64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
  • CatBoost详解--原理

    千次阅读 2020-02-20 14:28:54
    CatBoost详解 CatBoost简介 CatBoost中处理类别特征的方法 算法实现 修正梯度偏差 快速评分 基于GPU快速学习 CatBoost的参数 CatBoost简介   CatBoost: 基本原理类似于常规的Gradient Boosting算法,只是在处理...
  • 教程丨 一文详尽CatBoost

    千次阅读 2019-11-22 07:30:00
    转载自:Datawhale(ID:Datawhale)作者:潘华引本文13867字,建议阅读35分钟。本文详尽介绍CatBoost。CatBoostCatBoost是俄罗...
  • CatBoost之算法解析(Kaggle常用模型)

    千次阅读 2019-07-20 15:11:58
    catboost 简介 CatBoost据说是超越LightGBM和XGBoost的一大神器。 catboos的三个贡献点 它自动采用特殊的方式处理类别型特征(categorical features)。首先对categorical features做一些统计,计算某个类别特征...
  • 灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。该算法受到了灰狼捕食猎物活动的启发...用GWO优化CatBoost的参数来进行物联网入侵检测分类
  • catboost_insurance_churn_rate 此回购协议是对的补充,在该,我使用XGBoost和lightgbm训练了模型以预测样本保险客户的流失率。 在此仓库中,相同的数据集已用于训练具有Catboost的模型。 Catboost Catboost已与...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,644
精华内容 1,057
关键字:

catboost分类