训练工具LGB/XGB/CAT接口
""" LGB\XGB\CAT---sklearn接口"""
# 划分训练数据和测试数据
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2)
# 模型训练
gbm = LGBMRegressor(objective='regression', num_leaves=31,learning_rate=0.05, n_estimators=20)
gbm.fit = (x_train,y_train, eval_set=[(x_test, _test)], eval_metric='l1', early_stopping_round=5)
"""LGB\XGB\CAT---原生接口"""
# 转换为dataset数据格式
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2)
# 模型训练
gbm = LGBMRegressor(objective='regression', num_leaves=31, learning_rate=0.5, n_estimators=20)
gbm.fit(x_train,y_train, eval_set=[(x_test, _test)], eval_metric='l1', early_stopping_round=5)
数据预处理
9个离散特征
3个连续特征
1个多值特征
连续特征预处理
"""连续特征预处理"""
# 补充缺失值:
# 用0补充
# 用均值补充
# 剔除异常值
# 归一化/标准化(数据编码) min-max\Z-Score\Log
"""离散特征预处理"""
# 补充缺失值
# 用-1补充
# 剔除异常值 --- 出现频率太低的值
# 数据编码
# Lable--Encoding
# Count__Encoding
模型验证方法
"""hold out验证"""
# 将数据集按照一定比例随机切分成训练集、验证集和测试集来进行验证
"""交叉验证"""
# 将数据分为k份,每次训练使用(k-1)份数据,剩下的一份数据作为验证
# 如此,训练k个模型,就可以保证每一份数据都验证一遍,这样便得到了k个模型
# 对于测试集,使用这k个模型分别预测一遍,结果取其均值
# KFold --- 纯随机切分
# StratifiedKFold --- 保证每一个fold里的标签分布稳定
# ShuffleSplit --- 可以认为设置的随机,不保证遍历所有数据