
- LightGBM 教程
- LightGBM - 首页
- LightGBM - 概述
- LightGBM - 架构
- LightGBM - 安装
- LightGBM - 核心参数
- LightGBM - Boosting 算法
- LightGBM - 树生长策略
- LightGBM - 数据集结构
- LightGBM - 二分类
- LightGBM - 回归
- LightGBM - 排序
- LightGBM - Python 实现
- LightGBM - 参数调优
- LightGBM - 绘图功能
- LightGBM - 早停训练
- LightGBM - 特征交互约束
- LightGBM 与其他 Boosting 算法比较
- LightGBM 有用资源
- LightGBM - 有用资源
- LightGBM - 讨论
LightGBM - 二分类
什么是二分类?
二分类是一种机器学习问题,其目标是将数据分类到两个组或类别之一。使用二分类,模型预测两个可能结果之一。例如 - 垃圾邮件过滤器可以识别电子邮件为“垃圾邮件”或“非垃圾邮件”。
使用两个类别中的一种标记数据来训练模型。通过识别数据中的模式,模型区分这两个组。模型推断出新、未知数据的类别。
二分类的评估指标
分析二分类时使用以下指标:
准确率:定义为所有预测中正确预测的百分比。
精确率:精确率是指所有阳性预测中真正属于阳性预测的比例。
召回率:召回率(灵敏度)是指所有真实阳性中真正阳性预测的比例。
F1 分数:F1 分数是召回率和精确率的调和平均数。
受试者工作特征 - 曲线下面积:ROC-AUC 衡量模型区分两个类别的能力。
二分类的例子
以下是一些二分类任务的示例:
邮件过滤:邮件过滤是指将邮件分类为“垃圾邮件”或“非垃圾邮件”。
疾病诊断:疾病诊断是指检查患者是否患有某种疾病,结果为阳性或阴性。
情感分析:情感分析是指将客户评论分类为“正面”或“负面”。
二分类的实现
以下是使用 LightGBM 创建基本二分类需要遵循的步骤:
步骤 1:导入库
Python 库允许我们处理数据,并使用一行代码执行基本和复杂的任务。使用以下库,这些库是数据操作、机器学习和评估所必需的。
import pandas as pd import numpy as np import lightgbm as lgb from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score
步骤 2:创建虚拟数据集
创建一个包含 100 行和四列(feature1、feature2、feature3 和 target)的数据框。其中 feature1 和 feature2 是连续变量,feature3 是具有整数值的分类变量。target 是一个二元目标变量。
#Set seed for reproducibility np.random.seed(42) #Create a DataFrame with random data data = pd.DataFrame({ 'feature1': np.random.rand(100), #100 random numbers between 0 and 1 'feature2': np.random.rand(100), #100 random numbers between 0 and 1 'feature3': np.random.randint(0, 10, size=100), #100 random integers between 0 and 9 'target': np.random.randint(0, 2, size=100) #Binary target variable (0 or 1) }) print(data.head())
上述代码的结果为:

步骤 3:分割数据
将数据集分成训练集和测试集。在本例中,30% 的数据将用于测试,70% 用于训练。
#Split the data into training and testing sets X = data.drop('target', axis=1) #Features y = data['target'] #Target variable X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
步骤 4:创建 LightGBM 数据集
将训练和测试数据转换为 LightGBM 特定的格式。train_data 用于训练,test_data 用于评估。
#Create a LightGBM dataset train_data = lgb.Dataset(X_train, label=y_train) test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
步骤 5:设置 LightGBM 参数
定义 LightGBM 模型的目标函数、度量标准和其他超参数。
#Set LightGBM parameters params = { 'objective': 'binary', #Binary classification task 'metric': 'binary_error', #Evaluation metric 'boosting_type': 'gbdt', #Gradient Boosting Decision Tree 'num_leaves': 31, #Number of leaves in one tree 'learning_rate': 0.05, #Step size for each iteration 'feature_fraction': 0.9 #Fraction of features used for each iteration }
步骤 6:训练模型
使用给定的参数训练 LightGBM 模型。早停用于在 10 轮内没有观察到改进时停止训练。
#Train the model with early stopping bst = lgb.train(params, train_data, valid_sets=[test_data], early_stopping_rounds=10)
步骤 7:预测和评估
对测试集做出一些假设,将预测概率转换为二进制值,然后评估模型的准确性。
#Predict and evaluate the model y_pred = bst.predict(X_test, num_iteration=bst.best_iteration) #Predict probabilities y_pred_binary = [1 if x > 0.5 else 0 for x in y_pred] #Convert probabilities to binary predictions accuracy = accuracy_score(y_test, y_pred_binary) #Calculate accuracy print(f"Accuracy: {accuracy:.2f}")
这将产生以下结果
Accuracy: 0.50
准确率得分将显示 LightGBM 模型在测试集上的性能。由于数据集是随机创建的,因此准确率可能不高;预计它接近 0.5。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
总结
LightGBM 是一种解决二分类问题的有效方法。它对于具有高维特征的大型数据集非常有用。它集成的处理分类特征的方法最大程度地减少了预处理工作量。