首页 > 其他分享 >lightgbm

lightgbm

时间:2023-11-18 14:22:06浏览次数:41  
标签:plt lightgbm pred print train test best

 

test

# coding=utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.model_selection import GridSearchCV
from lightgbm import LGBMRegressor
import re
from sklearn.decomposition import PCA
import joblib
import shap

data = pd.read_excel(r"E:\Desktop\data.xlsx")
X = data.drop("y", axis=1)
y = data["y"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=0)
lgb = LGBMRegressor(random_state=0)
param_grid = {
    'n_estimators':[200,500],
    'max_depth': range(3,8,2),
    'learning_rate': [0.1, 0.2],
    'subsample': [0.8],
    'colsample_bytree': [0.8],
    'num_leaves':[31, 63, 127],
}

grid = GridSearchCV(lgb, param_grid, cv=5, scoring="neg_mean_squared_error")
grid.fit(X_train, y_train)
print("best_params:", grid.best_params_)
best_lgb = grid.best_estimator_
y_pred = best_lgb.predict(X_test)

error = y_pred - y_test
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
pcc = np.corrcoef(y_test, y_pred)[0, 1]

print("mse:", mse)
print("rmse:", rmse)
print("mae:", mae)
print("r2:", r2)
print("pcc:", pcc)

plt.scatter(y_test, y_pred, c="blue")
plt.xlabel("Truth")
plt.ylabel("predict")
plt.title("Truth vs predict")
plt.show()

plt.hist(error, bins=20, color="orange")
plt.xlabel("SE")
plt.ylabel("Fruquence")
plt.title("SE distribute")
plt.show()

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap="rainbow")
plt.xlabel("1st_PCA")
plt.ylabel("2rd_PCA")
plt.title("PCA result")
plt.colorbar()
plt.show()

y_train_pred = best_lgb.predict(X_train)
mae_train = mean_absolute_error(y_train, y_train_pred)

mse_train = mean_squared_error(y_train, y_pred)
rmse = np.sqrt(mse_train)
r2_train = r2_score(y_train, y_train_pred)
pcc_train = np.corrcoef(y_train, y_train_pred)[0, 1]

mse_train = mean_squared_error(y_train, y_pred)

print("mae_train:", mae_train)
print("mse_train:", mse_train)
print("rmse_train:", rmse_train)
print("r2_train:", r2_train)
print("pcc_train:", pcc_train)

# 对每列x feature进行权重分析
# 使用feature_importances_属性获取每个特征的重要性分数
feature_names = X.columns # 获取特征名称
feature_importances = best_lgb.feature_importances_ # 获取特征重要性分数
# 绘制柱状图显示每个特征的重要性
plt.bar(feature_names, feature_importances)
plt.xlabel("Feature")
plt.ylabel("Importance")
plt.title("Feature importance")
plt.show()

# 使用shap库获取每个特征的SHAP值
explainer = shap.TreeExplainer(best_lgb) # 创建解释器对象
shap_values = explainer.shap_values(X) # 获取SHAP值
# 绘制汇总图显示每个特征的SHAP值
shap.summary_plot(shap_values, X, plot_type="bar")

joblib.dump(best_lgb, 'best_lgb.pkl')
# 调用best_lgb.pkl文件 model = joblib.load('best_lgb.pkl') # 读取data.xlsx文件 df = pd.read_excel(r"E:\Desktop\data.xlsx") # 删除y列 df = df.drop("y", axis=1) # 遍历每一行的x值,输入到模型,并将预测的y值,输入到df_read.iloc[i, 18] for i, row in df.iterrows(): # 获取x值,转换为二维数组 x = row.values.reshape(1, -1) # 预测y值,转换为标量 y = model.predict(x)[0] # 输入y值到df_read.iloc[i, 18] df_read.loc[i, 18] = y

  

标签:plt,lightgbm,pred,print,train,test,best
From: https://www.cnblogs.com/kehan/p/17840448.html

相关文章

  • macbook pro install lightgbm
    前提是已经安装好了brew。若没有安装好brew可搜索安装brew,国内源即可。1,第一步,按装编译软件brewinstallopen-mpibrewinstallcmakebrewinstallgcc2,第二步,下载lightgbm网上大多使用这个地址克隆,但是国内访问会比较慢,有可能断线。gitclone--recursivegit://github.com/Mic......
  • LightGBM为什么比xgbost好?——选择梯度大(残差大)样本来进行特征分裂生成的树,借鉴了Ad
    LightGBM(LightGradientBoostingMachine)是一款基于决策树算法的分布式梯度提升框架。为了满足工业界缩短模型计算时间的需求,LightGBM的设计思路主要是两点:减小数据对内存的使用,保证单个机器在不牺牲速度的情况下,尽可能地用上更多的数据;减小通信的代价,提升多机并行时的效率,实现在......
  • AI夏令营-LightGBM的数学原理
    XGBoost提升集成学习模型的性能从基学习器本身入手从误差优化入手集成回归树的误差定义$argminL=\sum_{i=1}^nl(y_i,y_i^\Lambda)+\sum_{k=1}^K\Omega(f_k)$\(y_i\)是实际值,$y_i^\Lambda$是误差\(sl\Omega(f_k)=\gammaT+\frac{1}{2}\lambda\parallelw\p......
  • 【机器学习】Optuna机器学习模型调参(LightGBM、XGBoost)
    文章目录1.optuna简介2.LGBM和XGBoost调参汇总2.1LGBM2.1.1定义Objective2.1.2调参try2.1.3绘图2.1.4最佳参数2.2XGBOOST2.2.1定义Objectove2.2.2调参try2.2.3绘图2.2.4最佳参数1.optuna简介在Kaggle比赛的过程中我发现了一个问题(大家的Kernel模型中包含了众多c超参......
  • 机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测
    1.机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测本项目链接:https://www.heywhale.com/home/column/64141d6b1c8c8b518ba97dcc1.1LightGBM原理简介L......
  • Python互联网大数据爬虫的武汉市二手房价格数据采集分析:Linear Regression模型、XGBoo
    全文链接:http://tecdat.cn/?p=31958原文出处:拓端数据部落公众号分析师:YanLiu我国有大量的资金都流入了房地产行业,同时与其他行业有着千丝万缕的联系,可以说房地产行业对......
  • XGBoost和LightGBM时间序列预测对比
    GBoost和LightGBM都是目前非常流行的基于决策树的机器学习模型,它们都有着高效的性能表现,但是在某些情况下,它们也有着不同的特点。XGBoost和LightGBM简单对比训练速度Li......
  • 【802】jupyter不显示警告,lightGBM不显示训练细节
    参考:【jupyter】notebook屏蔽warning信息输出参考:lightGBM屏蔽训练过程信息importwarningswarnings.filterwarnings("ignore")lgbr=LGBR(**params)lgbr.fit(X,y,......
  • 【799】lightGBM实现
    参考:LightGBM使用参考:在Python中使用Lightgbm参考:官网-lightgbm.LGBMClassifierfromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,......
  • 基于LightGBM算法实现数据挖掘!
    ​ Datawhale干货 作者:黄雨龙,中国科学技术大学对于回归问题,Datawhale已经梳理过​​完整的实践方案(可点击)​​,本文对多分类的数据挖掘问题做了完整的方案总结。一、赛题数......