LightGBM做二元分类的代码
时间: 2024-05-06 12:20:48 浏览: 6
下面是使用LightGBM进行二元分类的示例代码:
```
import lightgbm as lgb
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 生成模拟数据
X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=0, random_state=42)
# 划分训练集和测试集
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)
# 设置参数
params = {
'objective': 'binary',
'metric': 'binary_logloss',
'boosting_type': 'gbdt',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9
}
# 训练模型
num_round = 100
bst = lgb.train(params, train_data, num_round)
# 预测测试集
y_pred = bst.predict(X_test)
y_pred = np.where(y_pred > 0.5, 1, 0)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
这个示例中,我们首先使用`make_classification`函数生成了一个包含1000个样本、10个特征和二元分类标签的模拟数据集。然后我们将数据集划分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的性能。
接下来,我们将训练集和测试集转换为LightGBM的数据集格式,并设置了一些参数。其中,`objective`和`metric`参数分别指定了模型的目标函数和评价指标,`num_leaves`表示每个决策树的叶子节点数,`learning_rate`表示学习率,`feature_fraction`表示每个决策树在训练时使用的特征的比例。
最后,我们使用`train`函数训练模型,并使用`predict`函数预测测试集。由于我们的目标是二元分类,所以使用了0.5作为阈值,将预测值转换为二元标签。最后,我们使用`accuracy_score`函数计算准确率,并输出结果。