# 导入必要的库
import pandas as pd
import lightgbm as lgb
# 读取数据集
data = pd.read_csv('train_data.csv')
# 分离特征列和标签列
feature_cols = [col for col in data.columns if col != 'label']
label_col = 'label'
# 定义模型参数
params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': {'auc'},
'num_leaves': 31,
'learning_rate': 0.05,
'verbose': 0
}
# 训练模型
lgb_data = lgb.Dataset(data[feature_cols], data[label_col])
model = lgb.train(params, lgb_data, num_boost_round=100)
# 获取特征重要性信息
feature_importance = model.feature_importance(importance_type='gain')
feature_importance_df = pd.DataFrame({'feature': feature_cols, 'importance': feature_importance})
feature_importance_df.sort_values(by='importance', ascending=False, inplace=True)
# 取前50个变量作为初筛结果
selected_features = feature_importance_df['feature'][:50].tolist()
# 输出初筛结果
print('The selected features are:', selected_features)
上述代码假设数据集已经准备好,并存储在名为train_data.csv
的文件中。该数据集包含多个特征和二元标签。
该示例使用LightGBM训练模型并获取特征重要性信息。我们首先定义特征列和标签列,然后使用LightGBM的train函数来训练模型。在训练过程中,我们指定了num_boost_round参数表示模型需要迭代的次数。
接下来,我们从模型中获取特征重要性信息,可以选择不同的importance_type参数(例如“gain”、“split”等)来计算特征重要性。在本示例中,我们将特征重要性保存到一个Dataframe中,并根据其值将特征排序。
最后,我们选择前50个特征作为初筛结果,并输出它们的名称。这些特征具有比其他特征更高的重要性分数,可能对预测目标变量更加有用。