LGB——python实现

# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd


def distance(X, c):
    m, r = np.shape(X)
    d = 0
    for i in range(m):
        d = np.sum(np.square(X[i] - c)) + d
    d = d / (m * 32)
    return d


def division(c):
    d = []
    for i in range(len(c)):
        d.append((1 + 0.001) * c[i]
### 如何在Python中使用LightGBM进行机器学习 #### 导入必要的库和模块 为了开始构建基于 LightGBM 的模型,需要先加载必需的库。这不仅限于 LightGBM 自身,还包括用于数据操作和其他辅助功能(如划分训练集测试集)的相关工具。 ```python import lightgbm as lgb import numpy as np from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score ``` 这段代码展示了如何引入 LightGBM 及其依赖项[^1]。 #### 准备数据集并分割成训练集与验证集 利用 `datasets` 模块可以方便地获取内置的数据集;而通过 `train_test_split()` 方法能够轻松实现数据集的切分工作,从而为后续建模做好准备。 ```python iris = datasets.load_iris() X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42) ``` 此部分同样来源于先前提及的例子。 #### 设置参数配置 当采用原生API而非Scikit-Learn风格接口时,定义合适的超参数对于指导算法行为至关重要。例如,在这里指定了目标函数(`objective`)以及度量标准(`metric`): ```python params = { 'num_leaves': 31, 'learning_rate': 0.05, 'n_estimators': 20, 'objective': 'multiclass', # 对应多类别分类任务 } params['metric'] = ['multi_logloss'] ``` 上述设置适用于一个多类别的场景,并选择了相应的损失函数作为评价指标[^3]。 #### 创建Dataset对象并训练模型 接下来创建适合 LightGBM 处理的数据结构——即 Dataset 类型的对象,之后调用 `train()` 函数启动训练过程。 ```python lgb_train = lgb.Dataset(X_train, y_train) lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train) model = lgb.train(params, lgb_train, valid_sets=[lgb_train, lgb_eval], num_boost_round=100, early_stopping_rounds=10) ``` 此处说明了怎样将输入特征转换为专有的格式以便更高效地传递给底层引擎执行运算。 #### 预测新样本标签及评估效果 完成训练后即可应用已学得的知识对未来未知实例作出预测判断,并借助之前提到过的 `accuracy_score()` 来衡量最终成果的好坏程度。 ```python y_pred_prob = model.predict(X_test, num_iteration=model.best_iteration) y_pred = [list(x).index(max(x)) for x in y_pred_prob] print(f"Accuracy: {accuracy_score(y_test, y_pred):.4f}") ``` 最后一步计算得到准确率分数以直观反映模型表现情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值