官网
安装
# 可能需要的安装包
pip install setuptools wheel numpy scipy scikit-learn -U
# 安装
pip install lightgbm
加载数据
- 加载数据可以接受一下数据:
- libsvm/tsv/csv 文本文件格式。
- Numpy 2维数组, pandas 对象。
- LightGBM 二进制文件。(这种方法会使数据加载的更快)
- 加载数据和特征工程
# 加载numpy数据
data = np.random.rand(500, 10) # 500 个样本, 每一个包含 10 个特征
label = np.random.randint(2, size=500) # 二元目标变量, 0 和 1
train_data = lgb.Dataset(data, label=label)
# 加载pandas数据
pd_data_train_obj=pd.read_csv("data/happiness_train_abbr.csv")
pd_data_train_label=pd_data_train_obj['happiness']
pd_data_train_target=pd_data_train_obj.drop(['happiness','survey_time'],axis=1)
X_train, X_test, y_train, y_test = train_test_split(pd_data_train_target, pd_data_train_label, test_size=0.3, random_state=0)
trn_data=lgb.Dataset(X_train,y_train)
# 加载和保存LightGBM二进制文件
train_data = lgb.Dataset('train.svm.txt')
train_data.save_binary('train.bin')
感觉常用的pandas加载数据的方案。
因为水平不足,特征工程就不在表述了。
- 加载验证数据
test_data = train_data.create_valid('test.svm')
# 或
test_data = lgb.Dataset('test.svm', reference=train_data)
- 设置训练参数
params = {'num_leaves':3,
'max_depth':3,
'learning_rate': 0.01,
'objective':'regression',
'boosting': 'gbdt'
}
训练参数有许多,可以查看官网的文档。
- 训练和预测数据
num_round=100000
clf = lgb.train(params, trn_data, num_round, valid_sets = [trn_data, val_data], verbose_eval=5000,early_stopping_rounds=10)
## 预测数据
ypred = clf.predict(pd_test_target,num_iteration=clf.best_iteration)
df=pd.DataFrame(ypred,columns=['happiness'])
这里使用了
early_stopping_rounds
预测数据时使用num_iteration=clf.best_iteration
参数。
- 个人感觉这是最简单的步骤,但其实还有很多步骤没有写,比如特征工程,参数的选取。以及完全没有提到的交叉验证和模型融合。
这里有大神的笔记可以参考。LightGBM调参笔记.