import numpy as npimport pandas as pdimport lightgbm as lgbfrom sklearnmodel_selection import KFoldfrom sklearnmetrics import mean_squared_error# 读取数据集train = pdread_exceltrainxlsxsheet_name=Sheet2tes
import numpy as np: 导入NumPy库,用于进行数值计算和数组操作。import pandas as pd: 导入Pandas库,用于数据处理和分析。import lightgbm as lgb: 导入LightGBM库,用于训练和预测模型。from sklearn.model_selection import KFold: 从Scikit-learn库中导入KFold类,用于进行K折交叉验证。from sklearn.metrics import mean_squared_error: 从Scikit-learn库中导入mean_squared_error函数,用于计算均方误差。train = pd.read_excel("train.xlsx",sheet_name='Sheet2'): 从Excel文件中读取名为"train.xlsx"的数据集的第二个工作表,并将其存储在名为"train"的DataFrame中。test = pd.read_excel("test.xlsx"): 从Excel文件中读取名为"test.xlsx"的数据集,并将其存储在名为"test"的DataFrame中。X = train.drop(columns=['厚度mm'], axis=1).values: 从训练集中删除名为"厚度mm"的列,并将剩余的特征值存储在名为"X"的NumPy数组中。y = train['厚度mm'].values: 将训练集中名为"厚度mm"的列的值存储在名为"y"的NumPy数组中。kf = KFold(n_splits=10): 创建一个KFold对象,将数据集分成10个折叠。rmse_scores = []: 创建一个空列表,用于存储每个折叠的均方根误差。for train_indices, test_indices in kf.split(X):: 对于每个折叠,将训练集和测试集的索引存储在train_indices和test_indices中。X_train, X_test = X[train_indices], X[test_indices]: 根据索引将特征值划分为训练集和测试集。y_train, y_test = y[train_indices], y[test_indices]: 根据索引将目标值划分为训练集和测试集。LGBR = lgb.LGBMRegressor(): 创建一个LightGBM回归模型对象。LGBR.fit(X_train, y_train): 使用训练集拟合(训练)模型。y_pred = LGBR.predict(X_test): 使用训练好的模型对测试集进行预测。rmse = mean_squared_error(y_test, y_pred): 计算预测值与真实值之间的均方误差。rmse_scores.append(rmse): 将每个折叠的均方误差添加到rmse_scores列表中。print("rmse scores : ", rmse_scores): 打印每个折叠的均方误差。print(f'average rmse scores : {np.mean(rmse_scores)}'): 打印平均均方误差。train_data = lgb.Dataset(X_train, label=y_train): 创建LightGBM的训练数据集对象。test_data = lgb.Dataset(X_test, label=y_test, reference=train_data): 创建LightGBM的验证数据集对象,并指定参考训练数据集。params = {...}: 定义模型的参数,包括目标任务、评估指标、学习率、树的深度和叶子数等。model = lgb.train(params=params, train_set=train_data, num_boost_round=300, early_stopping_rounds=30, valid_names=['test'], valid_sets=[test_data]): 使用训练数据集训练模型,并进行早停法和验证。score = model.best_score['test']['rmse']: 获取模型在验证集上的最佳均方根误差。test_pred = model.predict(test.drop('Id',axis=1).values): 使用训练好的模型对测试集进行预测。
原文地址: https://www.cveoy.top/t/topic/iKtA 著作权归作者所有。请勿转载和采集!