CatBoost模型,如何对鸢尾花数据集进行预测?
发布于 作者:苏南大叔 来源:程序如此灵动~

人工智能有很多种算法模型,苏南大叔已经写过很多相关算法文章了。本文要写的是一个catboost
算法,来对鸢尾花数据进行处理。看看catboost
模型,有什么特殊的地方没有?

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码故事。本文测试环境:win10
,python@3.12.0
,pandas@2.1.3
,catboost@1.2.5
。
CatBoost简介
CatBoost
是一种梯度提升决策树的集成模型。梯度提升是一种通过训练一系列弱学习器来构建一个强大的集成模型的技术。CatBoost
是从XGBoost
和LightGBM
中发展而来的一种优化版本。
相关文章:
CatBoost
最独特的特点是它对类别型特征的处理方式。传统的梯度提升决策树通常需要将类别型特征转换为数值型特征,例如使用独热编码或者标签编码。而CatBoost
采用了一种特殊的有序目录分类(Ordered boosting)算法,可以直接处理类别型特征,无需进行转换。
相关文章:
CatBoost
依然是没有包含在sklearn
里面的,所以需要单独安装。
截至到发稿,其最新版本为1.2.5
。
鸢尾花数据集
鸢尾花数据集已经反复说了无数次了,加载方法也说了无数次了。这里直接放代码:
不明白的读者,可以参考下面的文章:
- https://newsn.net/say/sklearn-csv.html
- https://newsn.net/say/sklearn-load_iris.html
- https://newsn.net/say/sklearn-train_test_split.html
catboost预测
这个catboost
的使用方式,除了model
的初始化,其它的.fit()
和.predict()
方法,都和其它的模型一样。但是fit()
函数的参数和以往不一样,是个pool()
。
输出:
从实际运行的效果上来看,这个模型的运行时间要比其它模型要时间长一些。

模型评估
这里引入的依然是经典的f1
/recall
/precision
,代码如下:
输出:
参考文章:
- https://newsn.net/say/sklearn-classification_report.html
- https://newsn.net/say/sklearn-classification_report-2.html
- https://newsn.net/say/sklearn-score.html
- https://newsn.net/say/sklearn-score-2.html
可能的区别
对比目前已知的一系列模型预测的方法,这个catboost
的最大区别是多了个Pool()
。参考代码:
不使用Pool()
改成和其它算法一样的传递方式的话,代码也是可以顺利运行的。例如:

结语
从上述代码中可以看出,catboost
的使用方式,和以往的算法略有区别。更多机器学习的算法文章,可以参考:


