Python案例分析:使用LightGBM算法、随机森林、五折交叉验证进行分类预测

使用knn算法完成对iris数据集的五折交叉验证分类代码 好的,使用 KNN 算法完成五折交叉验证分类的 Python 代码如下: from sklearn.datasets import load_iris from sklearn.model_selection import cross_val_score from sklearn.neighbors import KNeighborsClassifier # 加载 iris 数据集 iris =... 阅读详情

1、数据导入

import pandas as pd
import numpy as np
import warnings
from imblearn import under_sampling, over_sampling
from imblearn.over_sampling import SMOTE
warnings.filterwarnings('ignore')
pd.options.display.max_columns = None #显示所有列
pd.set_option('display.float_format', lambda x: '%.2f' % x) #取消科学计数法

train_data = pd.read_csv('Training.csv')
test_data = pd.read_csv('Test.csv')

2、数据清洗

#合并数据
total_data = pd.concat([train_data, test_data])

#替换.和?
total_data = total_data.replace('.', np.nan)
total_data = total_data.replace('?', np.nan)

print(total_data[['area']].info())

在这里插入图片描述

根据数据字典可以知道几点:
1)、area是一个字符串,区域代码第1码为大分类, 第1+2码为中分类, 依此类推。所以理论上应该是3位的,我们需要将异常数据转为空值,并且分别提取出前三位;
2)、黄色部分的字段是有相关性的,比如ck-saveall = ck-savetime ×ck-saveavg,所以可以通过计算填充;
3)、ck这个字段和后面带ck字样的字段都有关系,理论上应该后面字段中只要有一个值>0,ck就是1;
4)、其它字段应该也有内在联系,但是因为对银行业不了解,所以也不敢动。
5)、不建议用均值替换缺失值,因为我后续用的是LightGBM算法,所以可以不填充;如果使用RandomForest,则建议把缺失值填充为-1

total_data['area'].where(total_data['area'].str.len()>=3, inplace=True)
print(total_data[['area']].info())

在这里插入图片描述

# 将一些object变量转为数值变量
total_data.rename(columns={'depsaveavg':'dep-saveavg', 'depdrawavg': 'dep-drawavg'}, inplace=True)
num_features = list(set(total_data.columns) - set(['ID', 'area', 'ck', 'comp', 'VV']))
for col in num_features:
    total_data[col] = pd.to_numeric(total_data[col])
total_data.info()

在这里插入图片描述

def cap(x, quantile=[0.05, 0.95]):
    """盖帽法处理异常值
    Args:
    x:pd.Series列,连续变量
    quantile:指定盖帽法的上下分位数范围
    """ 
    # 生成分位数
    Q05, Q95=x.quantile(quantile).values.tolist()
    # 替换异常值为指定的分位数
    if Q05 > x.min():
        x = x.copy()
        x.loc[x<Q05] = Q05
    if Q95 < x.max():
        x = x.copy()
        x.loc[x>Q95] = Q95
    return(x)

columns = total_data.columns.tolist()
#对训练集进行盖帽法
total_data_1 = total_data[num_features]
total_data_2 = total_data_1.apply(cap)
new_total_data = pd.concat([total_data[['ID', 'area', 'ck', 'comp', 'VV']], total_data_2], axis=1)
total_data = new_total_data[columns]
total_data.head()

在这里插入图片描述

#根据规则,把'ck'和'dep'相关字段的数据补充
for way in ['ck-save', 'ck-draw', 'dep-save', 'dep-draw']:
    total_data['new_{}all'.format(way)] = total_data['{}time'.format(way)] * total_data['{}avg'.format(way)]
    total_data['new_{}time'.format(way)] = total_data['{}all'.format(way)] / total_data['{}avg'.format(way)]
    total_data['new_{}avg'.format(way)] = total_data['{}all'.format(way)] / total_data['{}time'.format(way)]
    total_data.loc[total_data['{}all'.format(way)].isnull(),'{}all'.format(way)] = total_data[total_data['{}all'.format(way)].isnull()]['new_{}all'.format(way)]
    total_data.loc[total_data['{}time'.format(way)].isnull(),'{}time'.format(way)] = total_data[total_data['{}time'.format(way)].isnull()]['new_{}time'.format(way)]
    total_data.loc[total_data['{}avg'.format(way)].isnull(),'{}avg'.format(way)] = total_data[total_data['{}avg'.format(way)].isnull()]['new_{}avg'.format(way)]
print(total_data.info())

在这里插入图片描述

#将ck的数据进行补充
print(total_data['ck'].value_counts())

在这里插入图片描述

total_data.loc[(total_data['ck-saveall']>0)|(total_data['ck-drawall']>0)|(total_data['ck-drawtime']>0)|(total_data['ck-saveavg']>0)
               |(total_data['ck-drawavg']>0)|(total_data['ck-savetime']>0)|(total_data['ck-changame']>0)|(total_data['ck-changtime']>0)
               |(total_data['ck-avg']>0), 'ck'] = '1'
print(total_data['ck'].value_counts())

在这里插入图片描述

3、数据集成和上采样

说明:因为评分方式是以有资金需求的中小企业公司户的F-Measure来评估预测结果的好坏,而样本极其不均衡,所以需要通过上采样来调整数据分布,我这里使用了smote方法(考试中时间来不及直接是1的样本×40)

#筛选有用的特征值
cate_features = ['area', 'ck', 'comp']
predictors = num_features + cate_features
all_columns = predictors + ['ID', 'VV']
total_data = total_data[all_columns]
total_data = total_data.fillna(-1)

for col in cate_features:
    total_data[col] = pd.to_numeric(total_data[col])
    
new_train_data = total_data[total_data['VV'] != 'Withheld']
new_test_data = total_data[total_data['VV'] == 'Withheld']

#上采样
smo = SMOTE(random_state=42)
new_train_data['VV'] = new_train_data['VV'].astype(int)
X_smo, y_smo = smo.fit_sample(new_train_data[predictors], new_train_data['VV'])
last_train_data = pd.concat([X_smo, y_smo], axis=1)
last_train_data.info()

在这里插入图片描述

last_train_data.head()

在这里插入图片描述

4、建模预测

(1)LightGBM

#简单预测
from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score
from sklearn.metrics import classification_report
import lightgbm as lgb

params = {'num_leaves': 30, #结果对最终效果影响较大,越大值越好,太大会出现过拟合
          'min_data_in_leaf': 30,
          'objective': 'binary', #定义的目标函数
          'max_depth': -1,
          'learning_rate': 0.01,
          "min_sum_hessian_in_leaf": 6,
          "boosting": "gbdt",
          "feature_fraction": 0.8,  #提取的特征比率
          "bagging_freq": 1,
          "bagging_fraction": 0.8,
          "bagging_seed": 11,
          "lambda_l1": 0.1,             #l1正则
          # 'lambda_l2': 0.001,     #l2正则
          "verbosity": -1,
          "nthread": -1,                #线程数量,-1表示全部线程,线程越多,运行的速度越快
          'metric': {'binary_logloss'},  ##评价函数选择
          "random_state": 2020, #随机数种子,可以防止每次运行的结果不一致
          # 'device': 'gpu' ##如果安装的事gpu版本的lightgbm,可以加快运算
          }

X_train, X_val, y_train, y_val = train_test_split(last_train_data[predictors], last_train_data["VV"], 
                test_size=0.2, random_state=2020)
training_data = lgb.Dataset(X_train, label=y_train)
val_data = lgb.Dataset(X_val, label=y_val, reference=training_data)

evals_result = {}  #记录训练结果所用

model = lgb.train(params, 
                  training_data, 
                  num_boost_round=10000, 
                  valid_sets=val_data, 
                  early_stopping_rounds=100, 
                  categorical_feature = cate_features,
                  evals_result = evals_result,
                  verbose_eval=500)
val_pred = model.predict(X_val)
val_pred = np.where(val_pred>=0.5, 1, 0)
val_true = y_val.as_matrix()
print(classification_report(val_true,val_pred))
test_pred = model.predict(new_test_data[predictors])
test_pred = np.where(test_pred>=0.5, 1, 0)
print(sum(test_pred))
print(len(test_pred))
answer = new_test_data.copy()
answer['VV'] = test_pred
answer[['ID', 'VV']].to_csv('results.csv', index=False)

在这里插入图片描述

(2)Random Forest

#使用RF进行简单预测
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import KFold

X_train, X_val, y_train, y_val = train_test_split(new_train_data[predictors], new_train_data["VV"], 
                test_size=0.2, random_state=2020, stratify=new_train_data["VV"])

rf = RandomForestClassifier(n_estimators=50, min_samples_split=5, min_samples_leaf=3)
rf.fit(X_train, y_train)
print(accuracy_score(rf.predict(X_val), y_val))

pred = rf.predict(new_test_data[predictors])
new_test_data['VV'] = pred
new_test_data[['ID', 'VV']].to_csv('up_answer.csv', index=False)

在这里插入图片描述

print(sum(pred))
print(len(pred))

在这里插入图片描述

(3)LightGBM5折交叉

#5折交叉验证
import lightgbm as lgb
from sklearn.model_selection import KFold
from sklearn.metrics import f1_score

train_x = last_train_data[predictors]
train_y = last_train_data['VV']
test_x = new_test_data[predictors]

X, y, X_test = train_x.values, train_y.values, test_x.values  # 转为np.array类型 

def self_metric(labels, preds):
    preds = preds.get_label()
    pred = np.where(preds>=0.5, 1, 0)
    return f1_score(labels, preds)

param = {'num_leaves': 30, #结果对最终效果影响较大,越大值越好,太大会出现过拟合
          'min_data_in_leaf': 30,
          'objective': 'binary', #定义的目标函数
          'max_depth': -1,
          'learning_rate': 0.01,
          "min_sum_hessian_in_leaf": 6,
          "boosting": "gbdt",
          "feature_fraction": 0.8,  #提取的特征比率
          "bagging_freq": 1,
          "bagging_fraction": 0.8,
          "bagging_seed": 11,
          "lambda_l1": 0.1,             #l1正则
          # 'lambda_l2': 0.001,     #l2正则
          "verbosity": -1,
          "nthread": -1,                #线程数量,-1表示全部线程,线程越多,运行的速度越快
          'metric': {'binary_logloss'},  ##评价函数选择
          "random_state": 2020, #随机数种子,可以防止每次运行的结果不一致
          # 'device': 'gpu' ##如果安装的事gpu版本的lightgbm,可以加快运算
          }

# 五折交叉验证
folds = KFold(n_splits=5, shuffle=True, random_state=36)
folds

在这里插入图片描述

predictions = [] #测试的预测值

for fold_, (train_index, test_index) in enumerate(folds.split(X, y)):
    print("第{}次交叉验证:".format(fold_+1))
    X_train, X_valid, y_train, y_valid = X[train_index], X[test_index], y[train_index], y[test_index]
    training_data = lgb.Dataset(X_train, label=y_train)    # 训练数据
    validation_data = lgb.Dataset(X_valid, label=y_valid)   # 验证数据
    clf = lgb.train(param, 
                    training_data, 
                    num_boost_round=10000, 
                    valid_sets=[validation_data], 
                    verbose_eval=1000, 
                    early_stopping_rounds=100,
#                     feval = self_metric
                    )
    x_pred = clf.predict(X_valid, num_iteration=clf.best_iteration)
    x_pred = np.where(x_pred>0.5,1,0)
    print(f1_score(y_valid, x_pred))
    y_test = clf.predict(X_test, num_iteration=clf.best_iteration)  # 预测
#     print(y_test[:10])
    predictions.append(y_test)

final_scoreList = []
for i in range(0, 6537):
    final_score = (predictions[0][i] + predictions[1][i] + predictions[2][i] + predictions[3][i] + predictions[4][i]) / 5
    final_scoreList.append(final_score)
# print(final_scoreList[:10])

pred1 = np.array(final_scoreList)
pred = np.where(pred1>=0.5, 1, 0)
print(sum(pred))
print(len(pred))

在这里插入图片描述

(4)LGBMClassifier5折交叉

from sklearn.model_selection import KFold
from sklearn.metrics import f1_score
from lightgbm import LGBMClassifier
import lightgbm as lgb
from scipy import stats

X, y, X_test = last_train_data[predictors].values, last_train_data['VV'], new_test_data[predictors].values  # 转为np.array类型

folds = KFold(n_splits=5, shuffle=True, random_state=36)
predictions = [] #最后的预测值

for k, (train_index, test_index) in enumerate(folds.split(X, y)):
    print("第{}次交叉验证:".format(k+1))
    X_train, X_valid, y_train, y_valid = X[train_index], X[test_index], y[train_index], y[test_index]
    clg = LGBMClassifier(
        boosting="gbdt",
        learning_rate=0.1,
        colsample_bytree=0.8,
#         max_depth=5,
#         n_estimators=100,
        num_leaves=31,
        lambda_l1=0.1,    
        lambda_l2=0.1,    
        seed=0
    )
    clg.fit(X_train,y_train,eval_set=[(X_valid, y_valid)],verbose=-1)
    train_pred = clg.predict(X_train)
    valid_pred = clg.predict(X_valid)
    print("本轮训练集得分:%.2f%%"%(f1_score(y_train,train_pred)*100))
    print("本轮验证集得分:%.2f%%"%(f1_score(y_valid,valid_pred)*100))
    pred = clg.predict(X_test)
    predictions.append(pred)
    
last_pred = stats.mode(predictions)[0][0]
new_test_data['VV'] = last_pred
new_test_data[['ID', 'VV']].to_csv('answer.csv', index=False)

在这里插入图片描述

print(sum(last_pred))
print(len(last_pred))

在这里插入图片描述

五折交叉验证/K折交叉验证, python代码到底怎么写 五折交叉验证: 把数据平均分成5等份,每次实验拿一份做测试,其余用做训练。实验5次求平均值。如上图,第一次实验拿第一份做测试集,其余作为训练集。第二次实验拿第二份做测试集,其余做训练集。依此类推~ 但是,道理都挺简单的,但是代码我就不会写,比如我怎么把数据平均分成5份?我怎么保证每次实验的时候,数据都是这么划分的?本来一般的训练时,把数据按6:2:2分成训练集、验证集和测试集,在训练集上训练图像,验证集上保存最佳模型,测试集用来最后的测试。现在交叉验证没有验证集了,怎么保存模型?以下为大家一一解答。 .. 阅读详情

相关推荐

ArcGIS+Python随机森林实现土壤类型预测制图全流程

在自然资源调查与农业规划领域,土壤类型的精准识别是土地资源管理的基础工作。传统制图依赖野外采样与人工勾绘,效率低且主观性强。机器学习分类算法为地学空间预测提供了新范式,其中随机森林凭借对高维特征的良好鲁棒性、内置特征重要性评估及抗过拟合能力,成为土壤分类建模的优选算法。应用ArcGIS完成样本点位环境变量提取、多源栅格统一与制图表达,结合Python生态中的scikit-learn库训练分类模型,可构建从样本数据生产、模型训练到空间预测出图的完整技术链路。该方法不仅适用于县域土壤普查,还可推广至植被分类、地

weixin_34197488的博客 358

Python机器学习15——XGboost和 LightGBM详细用法(交叉验证,网格搜参,变量筛选)

XGboost,LightGBM,交叉验证,网格搜参,变量重要性和筛选,早停

weixin_46277779的博客 1万+

集成学习实战:Bagging、Boosting与Stacking原理与工程落地

集成学习是一种通过组合多个基模型提升整体预测性能与鲁棒性的机器学习范式,其核心在于系统性地分解和抑制模型偏差与方差。Bagging侧重降低方差,适用于高波动场景;Boosting聚焦削减偏差,适合拟合能力不足但数据质量高的任务;Stacking则通过元模型挖掘异构模型间的互补性,实现精度跃升。该技术在推荐系统、风控建模、用户流失预警等工业场景中被广泛验证,能显著提升AUC、F1及线上业务指标(如GMV、CTR),同时增强模型对数据漂移与噪声的鲁棒性。本文深入解析三类主流集成方法的适用边界、关键参数设计、常见

weixin_30915951的博客 410

【项目实战】Python实现LightGBM分类模型(LGBMClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取。 1.项目背景 如今已是大数据时代,具备大数据思想至关重要,人工智能技术在各行各业的应用已是随处可见。GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛,通常被用于多分类、点击率预...

张陈亚的博客 3万+

随机森林分类实战:从决策树原理到sklearn调参避坑指南

在机器学习入门阶段,集成学习是提升模型稳定性的关键思想,其中随机森林作为典型的Bagging代表,通过训练多棵决策树并投票决策,有效缓解了单棵决策树容易过拟合的问题。理解随机森林的随机性来源、特征抽样与OOB验证机制,是掌握分类算法工程应用的核心前提。本文从基础的决策树原理出发,逐步演示sklearn实现随机森林分类的完整流程,涵盖数据准备、模型训练、特征重要性解读以及核心参数调优方法,并针对类别不平衡、高基数特征误导、缺失值处理等常见实战问题给出解决方案。无论你是刚接触机器学习,还是正在为分类项目选型,这

weixin_34152820的博客 559

Python机器学习电影推荐与票房预测系统实现详解

机器学习在个性化推荐与预测任务中应用广泛,其核心在于从数据中挖掘规律并做出决策。推荐系统基于协同过滤、矩阵分解等算法,通过用户与物品的相似关系缓解信息过载;票房预测则借助回归模型与特征工程,对市场表现进行量化预估。理解数据清洗、模型选择与评估口径,是构建可靠系统的关键。以电影领域为应用场景,围绕Python实现推荐系统与票房预测的完整流程,重点讲解协同过滤、随机森林、特征处理、时间切分以及Precision、R²等评估指标,并梳理实战中的高频踩坑点,帮助学习者快速掌握从数据到模型的工程化方法。

WGH100817的博客 534

Python、BMA动态权重Stacking集成、SMOTE-ENN采样电商交易欺诈预警应用|附数据代码

结果表明,BMA-Stacking模型在召回率与F1分数上显著优于单一模型及传统集成方法,SMOTE-ENN采样下召回率达80.98%,F1分数为83.02%,有效提升了对少数类欺诈交易的捕捉能力。近期围绕模型融合与不确定性量化的研究为突破这一瓶颈提供了新路径:若能借助概率框架动态评估多个基模型的预测贡献,再通过元学习机制进行二次整合,便有望在保持整体准确率的同时,显著增强对欺诈样本的捕获效果。ENN可清洗重叠区域的样本,二者结合能在扩充少数类的同时提升类别边界清晰度,更适合高维稀疏的欺诈检测场景。

拓端研究室TRL 392

智能睡眠监测系统设计:传感器选型、睡眠分期算法与边缘部署实战

睡眠监测系统通过毫米波雷达、压电薄膜或PPG等传感器采集呼吸和心跳信号,经模拟前端滤波与ADC采样后,在边缘侧提取时域和频域特征,利用随机森林等算法实现睡眠分期。该技术可非接触、连续地评估睡眠质量,广泛应用于智能床垫、健康IoT和可穿戴设备。信号质量与体动伪影处理是工程落地的关键,合理的传感器选型和边缘计算策略能显著提升系统稳定性。

weixin_33858336的博客 153

二手车交易价格预测-模型融合

目录1. 学习目标2. 背景知识2.1 回归模型融合2.1.1 加权融合2.1.2 starking融合2.2 分类模型融合2.2.1 Voting投票2.2.2 Stacking\Blending融合2.2.3 利用mlxtend的Stacking融合2.3 其他方法3. 项目内容和代码3.1 数据读取3.2 数据处理3.3 建立模型3.4 XGBoost的五折交叉回归验证实现3.5 加权融合3...

lz你ps的博客 833

DDoS入侵检测算法实战:从数据预处理到部署的避坑指南

入侵检测系统(IDS)是网络安全防护的重要组成部分,DDoS攻击识别更是其中极具挑战的场景。基于机器学习的DDoS检测算法通常利用流量统计特征来区分正常访问与攻击行为,其核心原理在于攻击会引发包速率、连接时长、TCP标志位等特征的显著异常。相比传统规则匹配,这类方法能自适应变化,提升防御响应效率,广泛应用于机房流量监控、云安全防护等现实环境。然而,许多在公开数据集上表现优异的高分模型,一旦部署到真实流量中却频频失效,问题往往出在数据预处理、特征工程与部署阈值上。本文结合工程实践,详细梳理从原始pcap提取特

weixin_33797791的博客 424

深圳杯D题建模全链路:小波去噪、STR分解与GBDT实战

时序信号处理中,噪声抑制与趋势周期分解是提升预测精度的关键。小波阈值去噪通过多尺度分解与阈值收缩,有效压制高频噪声;STR分解将序列拆解为趋势、季节与残差项,为树模型提供结构化特征。GBDT作为集成学习代表,能高效拟合非线性关系并输出特征重要性。这套组合在数学建模竞赛、传感器数据分析、金融时序预测等场景中广泛适用。本文以深圳杯D题为例,完整复现从数据预处理、特征工程到模型调参与论文图表输出的可复现链路,帮助读者掌握小波去噪、STR分解与GBDT调参的工程实践。

weixin_34353714的博客 394

随机森林实战:从双随机机制到业务落地的完整指南

在机器学习实践中,决策树与集成学习是处理表格数据的基石,而随机森林作为集成学习的代表,凭借双随机机制有效降低方差,成为数据建模的强力基线。它不仅提供OOB评分与特征重要性等附加价值,还能在分类、回归任务中稳定输出。在住宅价格预测、风控特征初筛等应用场景中,随机森林既能快速评估数据信号,又能为后续复杂模型奠定基础。深入剖析随机森林的原理、调参与避坑,并与GBM对比,帮助读者真正掌握这一经典算法。

weixin_34378767的博客 424

基于机器学习的恶意URL检测:从特征工程到模型落地

网络攻击手段不断演进,恶意URL已成为钓鱼、挂马、诈骗等攻击的主要载体。传统黑名单与规则匹配机制存在滞后性强、易被绕过等固有缺陷,难以应对动态多变的安全威胁。机器学习技术通过从URL中提取深层特征,学习恶意链接的共性规律,能够有效识别从未见过的风险样本,为安全检测提供了泛化能力。结合LightGBM等高效梯度提升模型,配合时间序列切分、类别不平衡处理及误报抑制机制,可在保持高召回率的同时显著降低误报率。该方案适用于企业安全运营自动化、实时链接拦截等场景,帮助安全团队快速响应新型攻击。本文详细拆解了改进版恶意

weixin_34194087的博客 300

逻辑回归预测瘀血阻络证||LogRegression 二分类 python3|五折交叉验证

得出相应的分类指标准确率accuracy,精确率precision,召回率recall,F1-score,并画出最终的ROC曲线,得出AUC值。

xl_xaio的博客 2360

python大数据分析与机器学习商业案例实战_LightGBM算法:广告收益回归预测模型_编程实例课程教程.pdf

python大数据分析与机器学习商业案例实战_LightGBM算法:广告收益回归预测模型_编程实例课程教程.pdf

DDS信号发生器设计避坑指南:从AD9834配置到巴特沃斯滤波实战

本文详细解析了基于AD9834芯片的DDS信号发生器设计中的关键技术要点与常见陷阱,涵盖时钟源选择、寄存器配置时序、巴特沃斯滤波器设计等核心内容。针对中高频段信号质量优化,提供了实用的解决方案和代码示例,帮助工程师规避设计误区,提升信号发生器的性能和稳定性。

2y3u4i5o6p的博客 786

将lgbm模型进行5折交叉验证,并用GridSearchCV进行超参搜索,并打印输出每一折的精度...

你可以使用 sklearn 的 GridSearchCV 函数来实现 lgbm 模型的 5 折交叉验证和超参数搜索。首先,需要定义模型和要调整的超参数的范围: import lightgbm as lgb from sklearn.model_selection import GridSearchCV model = lgb.LGBMClassifier() param_grid = { ...

weixin_35748962的博客 928

CODESYS V3.5 SP17编程环境全攻略:从安装到多语言编程实战

本文全面解析CODESYS V3.5 SP17编程环境,从安装配置到多语言编程实战技巧。详细介绍了运行时环境设置、六种IEC 61131-3语言的特性对比与混合编程策略,以及高级功能开发如自定义算法模块和实时通信配置。适合工业自动化工程师快速掌握这一强大工具。

weixin_30632089的博客 493

LightGBM

简介 LightGBM(Light Gradient Boosting Machine)是一款常用的GBDT(Gradient Boosting Decision Tree)工具包,由微软亚洲研究院开发,速度比XGBoost快,精度也还可以。它的设计理念是: 单个机器在不牺牲速度的情况下,尽可能使用上更多的数据。 多级并行的时候,通信的代价尽可能的低,并且在计算上可以做到线性加速。 所以其使用分布式的GBDT,选择了机遇直方图的决策树算法。LightGBM是一个实现GBDT算法的框架,支持高效率的并行

weixin_44235615的博客 1879

Codex入门19-数据库操作(解放双手:用自然语言写SQL、建表和数据迁移)

写 SQL 是后端开发的日常,但复杂的 JOIN、子查询、窗口函数总让人头疼。本文教你用 Codex CLI 实现:自然语言直接生成 CREATE TABLE、复杂 SQL 查询、数据库迁移脚本(Prisma/Knex/Alembic)、ORM 模型代码(SQLAlchemy/TypeORM)、甚至自动生成数据库文档。重点强调安全红线——永远不要让 AI 直接连接生产数据库。从需求描述到完整数据库层代码,一篇搞定。

yueyeguzhuo的专栏 234

YOLOv11架构革新:华为VanillaNet与BiFPN深度融合的突破性改进实战指南

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有!

LXY_LOVE36的博客 138

ML之LightGBM:通过数据预处理(分布图热图/特征分箱/标签编码)利用LightGBM实现银行客户是否购买产品二分类预测(交叉训练/AUC曲线可视化/Shap模型可解释)之详细攻略

​ ML之LightGBM:通过数据预处理(分布图热图/特征分箱/标签编码)利用LightGBM实现银行客户是否购买产品二分类预测(交叉训练/AUC曲线可视化/Shap模型可解释)之详细攻略 目录 预测用户是否进行购买产品 预测用户是否进行购买产品案例设计思路 预测用户是否进行购买产品 赛题简介 官网:银行客户认购产品预测_学习赛_天池大赛-阿里云天池 赛题以银行产品认购预测为背景,想让你来预测下客户是否会购买银行的产品。在和客户沟通的过

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3451

Apollo Planning决策规划算法代码详细解析 (2):Scenario执行

上一章节讲Scenario的决策逻辑,当确认当前Scenario后,本章节继续深入讲解在代码中,Scenario的执行过程。Scenario的Process()函数根据配置文件顺序执行stage,并判断目前处于哪个stage。当确认好stage后调用该stage对应的Process()函数,来进行具体的规划任务。 码字不易,喜欢的朋友们麻烦点个关注与赞。 在本文你将学到下面这些内容: Scenario的Process()函数的作用于调用方式; Scenario对象的初始化方法; 如何给每个Scen

自动驾驶Player的博客 5609
上一篇: LightGBM算法重要参数
下一篇: python基础
rubyw
博客等级 码龄7年 1528粉丝 234原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rubyw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值