- CatBoost 教程
- CatBoost - 首页
- CatBoost - 概述
- CatBoost - 架构
- CatBoost - 安装
- CatBoost - 特性
- CatBoost - 决策树
- CatBoost - 提升过程
- CatBoost - 核心参数
- CatBoost - 数据预处理
- CatBoost - 处理类别特征
- CatBoost - 处理缺失值
- CatBoost 分类器
- CatBoost - 回归器
- CatBoost - 排序器
- CatBoost - 模型训练
- CatBoost - 模型评估指标
- CatBoost - 分类指标
- CatBoost - 过拟合检测
- CatBoost 与其他提升算法的比较
- CatBoost 有用资源
- CatBoost - 有用资源
- CatBoost - 讨论
CatBoost 分类器
CatBoost 分类器是一个处理分类问题的有用工具,尤其是在处理包含类别变量的数据时。梯度提升是其核心方法,它将多个弱模型组合成一个强大的模型。CatBoost 的主要特性之一是它能够处理类别数据,而无需将其转换为数值。
现在我们将学习如何使用 CatBoost 分类器。我们将以一个例子为例,在这个例子中,我们想要使用某些数据来预测某些东西。
使用 CatBoostClassifier 的步骤
现在让我们一起学习使用 CatBoost 分类器的步骤:
1. 准备数据
数据:为了训练模型,必须获得一系列数据。假设您有一份人员名单,以及他们的年龄、性别和薪水。您想预测每个人是否会购买产品。这里:
特征 (X):具体信息,例如年龄、性别和价格。
标签 (y):结果,包括他们是否购买了该商品。
训练数据:模型将从中学习的数据。
测试数据:用于检查模型是否有效的数据。
示例
以下是如何准备数据的示例:
X_train, X_test, y_train, y_test = train_test_split (data, labels, test_size=0.2)
2. 构建 CatBoost 分类器
接下来,生成 CatBoost 模型。您可以更改许多参数,例如:
迭代次数:它将生成的子模型或树的数量。每棵树都从前一棵树的错误中学习。
学习率:模型的学习率。如果太快,模型可能会错过重要的细节。如果太慢,则学习时间会很长。
深度:树的整体深度。通过增加深度,模型可以捕获更复杂的特征,但是过拟合的可能性也会增加。
示例
以下是如何构建 CatBoost 分类器的示例:
model = CatBoostClassifier (iterations=1000, learning_rate=0.1, depth=6)
3. 训练模型
一旦数据和模型可用,就需要训练模型。这意味着模型将浏览训练数据并尝试查找任何模式。这里的 fit 命令告诉模型从训练数据 (X_train 和 y_train) 中学习。而 verbose=100 表示模型将在每 100 次迭代后显示其进度,以便您可以查看其学习情况。
model.fit (X_train, y_train, verbose=100)
4. 进行预测
模型训练完成后,您可以使用它进行预测。例如,当您提供新数据 (X_test) 时,它将预测结果 (y_test)。
preds = model.predict(X_test)
5. 评估模型
进行预测后,您必须评估模型的性能。一种方法是检查模型预测的准确性。
accuracy = accuracy_score(y_test, preds) print(f"Accuracy is: {accuracy}")
使用 CatBoostClassifier 的示例
我们将使用 Housing.csv 数据集来演示如何创建 CatBoost 分类器模型。为了创建模型,我们将遵循上述步骤:
import pandas as pd from catboost import CatBoostClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, classification_report # 1. Load the dataset data = pd.read_csv('/Python/Housing.csv') # Step 3: Preprocess the Data # Convert categorical variables to numeric categorical_features = ['mainroad', 'guestroom', 'basement', 'hotwaterheating', 'airconditioning', 'prefarea', 'furnishingstatus'] for col in categorical_features: data[col] = data[col].map({'yes': 1, 'no': 0}) # Target variable X = data.drop('price', axis=1) y = data['price'] # Step 4: Split the Data X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Step 5: Train the Model model = CatBoostClassifier(iterations=100, depth=6, learning_rate=0.1, random_seed=42, verbose=0) model.fit(X_train, y_train) # Step 6: Evaluate the Model y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) report = classification_report(y_test, y_pred) print(f"Accuracy: {accuracy:.2f}") print("Classification Report:") print(report)
输出
以下是结果:
Accuracy: 0.00 Classification Report: precision recall f1-score support 1750000 0.00 0.00 0.00 1.0 1820000 0.00 0.00 0.00 1.0 1890000 0.00 0.00 0.00 2.0 2100000 0.00 0.00 0.00 1.0 2233000 0.00 0.00 0.00 1.0 . . . 9800000 0.00 0.00 0.00 2.0 10150000 0.00 0.00 0.00 1.0 12250000 0.00 0.00 0.00 1.0 13300000 0.00 0.00 0.00 1.0 accuracy 0.00 109.0 macro avg 0.00 0.00 0.00 109.0 weighted avg 0.00 0.00 0.00 109.0