PYTHON帮助

lightgbm Python(工作原理:开发人员指南)

发布 2025年三月5日
分享:

介绍

LightGBM代表轻量级梯度提升机。在梯度提升框架和梯度提升算法中,LightGBM作为一个由微软开发的高效且快速的梯度提升框架,用于大规模数据处理,具有先进的算法,保证了高准确性和性能。 其优势在于其快速的训练速度,易于扩展到大数据集,以及对高维度的数据 LightGBM在各种机器学习任务中表现优异,如回归、分类和排序,其叶节点生长方式提供了更好的泛化能力。

它自动处理缺失的数据,这对IronPDF非常有用。IronPDF是一个Python库,用于创建、编辑和读取PDF文档,提供了几种直接从数据分析结果生成专业PDF报告的方法。 IronPDF 是一个库,可以帮助开发者从 HTML、图像,甚至是原始文本创建 PDF 文档。 它添加了诸如页眉、页脚和水印等功能。 利用 Python .NET 来弥合差距,使用 LightGBM 推动分析,然后使用 IronPDF 将洞察转化为高度详细、格式丰富的 PDF 报告呈现结果,数据科学家可以做很多事情。 这种集成将为数据驱动的项目创建一个强大的端到端解决方案,通过强大的预测建模和全面的报告。

lightgbm Python是什么?

LightGBM 是一个由微软开发的开源梯度提升框架,旨在实现高性能。 其目标是高效且可扩展,处理具有许多特征的数百万个实例。 LightGBM算法旨在实施高级技术,以进一步提高GBM在直方图决策树学习和逐叶树增长等任务中的速度和性能。 之后,与传统的梯度提升方法相比,它可以实现更快的训练时间和更低的内存使用。

破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。

它支持许多机器学习任务,如回归、分类和排序,并强力支持处理缺失数据。 总体而言,LightGBM非常灵活,并提供了许多超参数用于微调和自定义,以完善和提高模型性能。 它可以轻松与 Python 协作,并且在数据科学家和机器学习从业者中非常有名,用于构建快速且准确的预测任务。

lightgbm python 的功能

LightGBM在Python中代表轻量级梯度提升机。 它以其在大规模数据中的有效性、规模和性能而闻名。 以下是其一些引人注目的关键功能:

高效能:基于直方图的算法用于训练时,优先提供更快的训练速度和较低的内存消耗。 可以高效处理包含数百万数据点和功能的大型集合。

可扩展性:它支持分布式学习,因此能够跨多台机器进行扩展。LightGBM支持优化的并行处理,可以使用多个CPU核心更快地进行训练。

逐叶树生长:逐叶生长树木(最佳优先)这可能导致比水平增长更深的树和更高的某些任务准确性。

支持各种任务:提供广泛的目标函数和评估指标集合。 此外,它还处理回归、分类、排序和其他学习任务。

内置缺失数据处理功能:该功能自动处理缺失值,从而为您节省了预处理正则化和正则化参数的麻烦。

L1(拉索)和 L2(岭)正则化可以防止过拟合,使模型更准确地泛化。

分类特征支持: 它直接处理分类特征,因此无需对它们进行独热编码,从而减少数据集的维数。

提前停止:根据验证性能实施提前停止,以避免过拟合并减少训练时间。

超参数调整: 在超参数调整方面有相当大的空间,比如学习率、最大深度和叶子数目,可以进行微调以提高模型性能。

特征重要性: 提供工具来衡量每个特征的重要性,以帮助特征选择和模型可解释性。

灵活和可定制:这允许使用自定义目标函数和评估指标,从而使用户在模型设计上具有灵活性。

与Python生态系统的原生无缝集成: 它可以无缝集成到数据科学中的其他流行库,如NumPy、pandas和sci-kit-learn,并且可以轻松整合到现有工作流中。

创建和配置 lightgbm python

在 Python 中设置和配置 LightGBM 模型包括几个步骤:数据准备、建立模型、训练和评估。 具体步骤如下:

安装LightGBM

首先,你需要确保安装了LightGBM。 通过 pip,您可以使用命令行安装它:

pip install lightgbm
pip install lightgbm
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'pip install lightgbm
$vbLabelText   $csharpLabel

导入库

导入所有基本库,包括LightGBM和用于数据处理和评估的其他库。

import lightgbm as lgb
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import lightgbm as lgb
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import TryCast(lightgbm, lgb) import TryCast(numpy, np) from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error
$vbLabelText   $csharpLabel

准备数据

首先,让我们来看一个使用波士顿房价数据集的例子:

# Load the Boston housing dataset
boston = load_boston()
X = boston.data
y = boston.target
# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Load the Boston housing dataset
boston = load_boston()
X = boston.data
y = boston.target
# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
#Load the Boston housing dataset
#Split the dataset into training and testing sets
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'boston = load_boston() X = boston.data y = boston.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
$vbLabelText   $csharpLabel

为LightGBM创建数据集

LightGBM 具有一个自定义的数据结构,称为 Dataset,用于训练。

# Create Dataset for training and testing sets
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
# Create Dataset for training and testing sets
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
#Create Dataset for training and testing sets
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'train_data = lgb.Dataset(X_train, label=y_train) test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
$vbLabelText   $csharpLabel

设置参数

现在,配置模型参数。 以下是一个配置示例:

# Set parameters
params = {
    'objective': 'regression',  # Objective function
    'metric': 'mse',  # Evaluation metric
    'boosting_type': 'gbdt',  # Type of boosting (Gradient Boosting Decision Tree)
    'num_leaves': 31,  # Number of leaves in one tree
    'learning_rate': 0.05,  # Learning rate
    'feature_fraction': 0.9,  # Fraction of features to be used for training
    'bagging_fraction': 0.8,  # Fraction of data to be used for each iteration
    'bagging_freq': 5,  # Frequency for bagging
    'verbose': -1  # Suppress warnings
}
# Set parameters
params = {
    'objective': 'regression',  # Objective function
    'metric': 'mse',  # Evaluation metric
    'boosting_type': 'gbdt',  # Type of boosting (Gradient Boosting Decision Tree)
    'num_leaves': 31,  # Number of leaves in one tree
    'learning_rate': 0.05,  # Learning rate
    'feature_fraction': 0.9,  # Fraction of features to be used for training
    'bagging_fraction': 0.8,  # Fraction of data to be used for each iteration
    'bagging_freq': 5,  # Frequency for bagging
    'verbose': -1  # Suppress warnings
}
#Set parameters
'INSTANT VB TODO TASK: The following line could not be converted:
params = {
$vbLabelText   $csharpLabel

训练模型

现在,使用 train 方法训练 LightGBM 模型,如下所示:

# Train the model
num_round = 100
bst = lgb.train(params, train_data, num_round, valid_sets=[test_data], early_stopping_rounds=10)
# Train the model
num_round = 100
bst = lgb.train(params, train_data, num_round, valid_sets=[test_data], early_stopping_rounds=10)
#Train the model
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'num_round = 100 bst = lgb.train(params, train_data, num_round, valid_sets=[test_data], early_stopping_rounds=10)
$vbLabelText   $csharpLabel

进行预测

现在,使用训练好的模型对测试集进行预测。

# Make predictions
preds = bst.predict(X_test, num_iteration=bst.best_iteration)
# Make predictions
preds = bst.predict(X_test, num_iteration=bst.best_iteration)
#Make predictions
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'preds = bst.predict(X_test, num_iteration=bst.best_iteration)
$vbLabelText   $csharpLabel

评估模型

Lightgbm结合多个弱学习器来创建一个强大的模型。 用适合手头问题的指标(如均方误差)对模型进行评分:

# Calculate mean squared error
mse = mean_squared_error(y_test, preds)
print(f"Mean Squared Error: {mse}")
# Calculate mean squared error
mse = mean_squared_error(y_test, preds)
print(f"Mean Squared Error: {mse}")
#Calculate mean squared error
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'mse = mean_squared_error(y_test, preds) print(f"Mean Squared Error: {mse}")
$vbLabelText   $csharpLabel

lightgbm Python(工作原理:开发人员指南):图2 - 示例控制台输出

保存和加载模型

您可以将训练后的模型保存在文件中,并在需要重新训练时重新加载。

# Save lightgbm models
bst.save_model('lightgbm_model.txt')
# Load the model
bst_loaded = lgb.Booster(model_file='lightgbm_model.txt')
# Save lightgbm models
bst.save_model('lightgbm_model.txt')
# Load the model
bst_loaded = lgb.Booster(model_file='lightgbm_model.txt')
#Save lightgbm models
#Load the model
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'bst.save_model('lightgbm_model.txt') bst_loaded = lgb.Booster(model_file='lightgbm_model.txt')
$vbLabelText   $csharpLabel

lightgbm Python(工作原理:开发人员指南):图3 - 上述模型的示例输出数据

入门

首先,您必须设置好两个库,使用LightGBM进行数据分析,并使用IronPDF生成PDF报告。 以下是将这些工具集成到您应用程序中的详细指南。

什么是IronPDF

使用强大且全能的IronPDF for Python软件包,实现PDF的创建、编辑和查看。 这为程序员提供了一种操作现有 PDF 并将 HTML 文件转换为 PDF 文件的方法,以及对 PDF 执行其他基于编程的操作。 IronPDF在生成高质量PDF格式报告时带来了灵活性和易用性。 它对于需要动态创建和处理PDF的应用程序变得高效。

lightgbm Python(开发者指南:工作原理):图4 - IronPDF:Python PDF库

将HTML转换为PDF

您可以使用IronPDF从任意HTML信息创建PDF文档,无论其有多旧。 以下内容使得能够将充分利用现代HTML5、CSS3和JavaScript功能的网页内容转换为华丽的艺术PDF出版物。

构建和修改PDF

它可以通过编程创建包含文本、图像、表格和其他资料的新PDF文档。 IronPDF还可以打开和编辑现有的PDF文档,以实现更多自定义。 您可以根据需要添加、更改或删除PDF文档中的任何内容。

复杂的设计和风格

通过通过 CSS 在 PDF 中样式化内容来实现。 因此,它将支持复杂的布局,涵盖不同的字体、颜色和其他设计风格,适用于广泛的领域。 不仅如此,借助JavaScript,PDF还可以支持动态内容,使得渲染HTML内容成为可能。

安装 IronPDF

可以使用 Pip 安装 IronPDF。以下是安装命令:

pip install ironpdf
pip install ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'pip install ironpdf
$vbLabelText   $csharpLabel

将lightgbm与IronPDF结合

首先,导入必要的库,然后加载您的信息。 在此示例中,我们将使用波士顿房价数据集。

import lightgbm as lgb
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from ironpdf import *     import warnings
warnings.filterwarnings('ignore')
License.LicenseKey = "";
# Load data
boston = load_boston()
X = boston.data
y = boston.target
# Split data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create Dataset
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
# Set parameters
params = {
    'objective': 'regression',
    'metric': 'mse',
    'boosting_type': 'gbdt',
    'num_leaves': 31,
    'learning_rate': 0.05,
    'feature_fraction': 0.9,
    'bagging_fraction': 0.8,
    'bagging_freq': 5,
    'verbose': -1
}
# Train model
num_round = 100
bst = lgb.train(params, train_data, num_round, valid_sets=[test_data])
# Make predictions
preds = bst.predict(X_test, num_iteration=bst.best_iteration)
# Evaluate model
mse = mean_squared_error(y_test, preds)
print(f"Mean Squared Error: {mse}")
# Create a PDF document
iron_pdf =  ChromePdfRenderer()
# Create HTML content
# Create HTML content
html_content = f"""
<html>
<head>
    <title>LightGBM Model Report</title>
</head>
<body>
    <h1>LightGBM Model Report</h1>
    <p>Mean Squared Error: {mse}</p>
    <h2>Predictions</h2>
    <ul>
        {''.join([f'<li>{pred}</li>' for pred in preds])}
    </ul>
</body>
</html>
"""
pdf=iron_pdf.RenderHtmlAsPdf(html_content)
# Save the PDF document
pdf.SaveAs("LightGBM_Report.pdf")
print("PDF document generated successfully.")
import lightgbm as lgb
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from ironpdf import *     import warnings
warnings.filterwarnings('ignore')
License.LicenseKey = "";
# Load data
boston = load_boston()
X = boston.data
y = boston.target
# Split data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create Dataset
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
# Set parameters
params = {
    'objective': 'regression',
    'metric': 'mse',
    'boosting_type': 'gbdt',
    'num_leaves': 31,
    'learning_rate': 0.05,
    'feature_fraction': 0.9,
    'bagging_fraction': 0.8,
    'bagging_freq': 5,
    'verbose': -1
}
# Train model
num_round = 100
bst = lgb.train(params, train_data, num_round, valid_sets=[test_data])
# Make predictions
preds = bst.predict(X_test, num_iteration=bst.best_iteration)
# Evaluate model
mse = mean_squared_error(y_test, preds)
print(f"Mean Squared Error: {mse}")
# Create a PDF document
iron_pdf =  ChromePdfRenderer()
# Create HTML content
# Create HTML content
html_content = f"""
<html>
<head>
    <title>LightGBM Model Report</title>
</head>
<body>
    <h1>LightGBM Model Report</h1>
    <p>Mean Squared Error: {mse}</p>
    <h2>Predictions</h2>
    <ul>
        {''.join([f'<li>{pred}</li>' for pred in preds])}
    </ul>
</body>
</html>
"""
pdf=iron_pdf.RenderHtmlAsPdf(html_content)
# Save the PDF document
pdf.SaveAs("LightGBM_Report.pdf")
print("PDF document generated successfully.")
import TryCast(lightgbm, lgb) import TryCast(numpy, np) _ 'ignore') License.LicenseKey = "";
	From sklearn.datasets import load_boston
	From sklearn.model_selection import train_test_split
	From sklearn.metrics import mean_squared_error
	From ironpdf import * import warnings warnings.filterwarnings(
#Load data
#Split data
#Create Dataset
#Set parameters
#Train model
#Make predictions
#Evaluate model
#Create a PDF document
#Create HTML content
#Create HTML content
#Save the PDF document
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'boston = load_boston() X = boston.data y = boston.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) train_data = lgb.Dataset(X_train, label=y_train) test_data = lgb.Dataset(X_test, label=y_test, reference=train_data) params = { 'objective': 'regression', 'metric': 'mse', 'boosting_type': 'gbdt', 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9, 'bagging_fraction': 0.8, 'bagging_freq': 5, 'verbose': -1 } num_round = 100 bst = lgb.train(params, train_data, num_round, valid_sets=[test_data]) preds = bst.predict(X_test, num_iteration=bst.best_iteration) mse = mean_squared_error(y_test, preds) print(f"Mean Squared Error: {mse}") iron_pdf = ChromePdfRenderer() html_content = f"<html>
'<head>
'    <title>LightGBM Model Report</title>
'</head>
'<body>
'    <h1>LightGBM Model Report</h1>
'    <p>Mean Squared Error: {mse}</p>
'    <h2>Predictions</h2>
'    <ul>
'        {''.join([f'<li>{pred}</li>' for pred in preds])}
'    </ul>
'</body>
'</html>" pdf=iron_pdf.RenderHtmlAsPdf(html_content) pdf.SaveAs("LightGBM_Report.pdf") print("PDF document generated successfully.")
$vbLabelText   $csharpLabel

LightGBM 和 IronPDF 的集成包括先使用 LightGBM 进行分析,然后通过 Python 库将其用作 IronPDF 在 PDF 报告生成中的应用。 首先是LightGBM的安装、数据集的加载、其预处理、拆分为训练集和测试集,以及创建DMatrix对象以有效处理数据。 然后设置LightGBM模型的参数,接着是目标函数和其他各种参数。 模型已经训练完成,使用该模型预测测试集,并根据均方误差等指标进行测量。

lightgbm Python(工作原理:开发者指南):图 5 - 示例控制台输出

一个名为IronPDF的Python库生成PDF。 输出的HTML包含分析、模型和性能预测结果。 此HTML内容通过类转换为PDF文档将Html渲染为PdfIronPDF库并保存到所需位置。 这可以实现从机器学习模型开发和评估到生成详细PDF报告的顺畅工作流程,从而实现高效的数据洞察交流。

lightgbm Python(工作原理:开发人员指南):图6 - 使用LightGBM模型生成数据并使用IronPDF展示的示例报告

结论

开发人员可以结合使用 LightGBM 和 IronPDF 在 Python 中执行复杂的数据分析并生成专业报告。 由于其特性,LightGBM在包含复杂机器学习问题的大型数据集上表现出色。 可以使用 Python .NET 将 LightGBM 的结果与 IronPDF 结合,生成专业质量的 PDF 报告。

该界面通过创建从数据处理和模型验证到文档编制和展示的工作流程,使与利益相关者共享见解变得更加容易。 LightGBM和IronPDF协同作用,为进行深入研究提供更强大的能力,无论是数据驱动的项目、商业分析,还是学术研究,都能以连贯的方式向观众展示研究结果。

集成IronPDF铁软件(Iron Software)产品为您的客户及其用户提供功能丰富的高端软件解决方案。 这也将帮助您优化项目工作和流程。

除了功能之外,IronPDF 还拥有完整的文档、活跃的社区和定期的更新。 有了这些,Iron Software 成为现代软件开发项目的可靠伙伴。 开发人员可以通过一个测试 IronPDF 的所有功能免费试用. 之后,许可费用为 $749 或更高。

雷根·彭

雷根·彭

软件工程师

 LinkedIn

Regan毕业于雷丁大学,拥有电子工程学士学位。在加入Iron Software之前,他的前工作职位要求他专注于单一任务;他在Iron Software最喜欢的是能进行多种工作,无论是增加销售价值、技术支持、产品开发还是营销。他喜欢了解开发人员如何使用Iron Software的库,并利用这些知识不断改进文档和开发产品。
< 前一页
瓶子 Python(《它是如何工作的:开发人员指南》)
下一步 >
PyJWT Python(工作原理:开发者指南)