任务描述
本关任务:分析特征,筛选重要的特征,调整分类器参数,以提高分类器的性能。
相关知识
- 特征信息可视化
散点图 折线图 饼状图 箱线图 热力图
- 特征缩放
最大最小规范化 Z-Score规范化 归一化 映射到正态分布 稀疏数据缩放 带离群点的缩放
- LightGBM参数:
objective:用于指定学习任务及相应的学习目标,常用的可选参数值如下: “regression”,使用L2正则项的回归模型(默认值)。 “regression_l1”,使用L1正则项的回归模型。 “mape”,平均绝对百分比误差。 “binary”,二分类。 “multiclass”,多分类。 n_estimators:boosting的迭代次数。默认设置为100。一般根据数据集和特征数据选择100~1000之间。 learning_rate:学习率。默认设置为0.1,一般设置在0.05-0.1之间。 num_leaves:指定叶子的个数,默认值为31,此参数的数值应该小于
2max_depth
max_depth:指定树的最大深度,默认值为-1,表示不做限制,合理的设置可以防止过拟合。 min_data_in_leaf:叶节点样本的最少数量,默认值20,用于防止过拟合。 min_gain_to_split:指定叶节点进行分支所需的损失减少的最小值,默认值为0。设置的值越大,模型就越保守。 bagging_fraction:默认值1,指定采样出bagging_fraction * n_samples个样本用于训练弱学习器。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。 取值在(0, 1)之间。 feature_fraction:构建弱学习器时,对特征随机采样的比例,默认值为1,取值在(0, 1)之间。
编程要求
根据提示,在右侧编辑器补充代码,优化数据预处理方案。
测试说明
平台将对模型进行自动测试:
如果模型性能高于预设的值,则 输出: 准确率为:0.xxxxxx
准确率高于0.995!
否则,输出: 准确率为:0.xxxxxx
请继续努力!
实验结果
import warnings
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
import lightgbm as lgb
from load_data import load_data
def data_preprocess(data):
# 拟输入模型的数据
X = data.iloc[:, 2:56]
# 分类标签
y = data.iloc[:, 56]
# ---------Begin-----------#
# 请对 X 进行合理的预处理
# from sklearn.processing import MinMaxScaler
# scaler = MinMaxScaler()
# X = scaler.fit_transform(X)
# ---------End-------------#
return X, y
def train_model():
"""训练一个LightGBM分类器"""
data_frame = load_data()
X_train, y_train = data_preprocess(data_frame)
# 构建LightGBM分类器
# ---------Begin-----------#
lgb_classifier = lgb.LGBMClassifier(objective="binary", n_estimators=300, learning_rate=0.1) # 可以尝试可以去调试这个几个参数
# ---------End-------------#
lgb_classifier.fit(X_train, y_train)
return lgb_classifier