bm.feature.embedded package

特征选择——嵌入法

bm.feature.embedded.feature_importance module

bm.feature.embedded.feature_importance.calc_feature_importance(dataframe, target, task='classification', n_iterations=10)

计算特征重要性

Parameters
  • dataframe (pandas.dataframe) – 需要计算特征重要性的数据表

  • target (pandas.series) – 模型训练的目标列

  • task (string) – 模型训练的类型,默认为分类任务

  • n_iterations (int) – 模型训练次数

Returns

特征重要性排序表

Return type

pandas.dataframe

bm.feature.embedded.feature_importance.filter_features_by_importance(dataframe, target, task='classification', n_iterations=10, threshold=0.95, drop=True)

根据累积特征重要性(阈值),过滤出高于/低于阈值的特征

Parameters
  • dataframe (pandas.dataframe) – 需要计算特征重要性的数据表

  • target (pandas.series) – 模型训练的目标列

  • task (string) – 模型训练的类型,默认为分类任务

  • n_iterations (int) – 模型训练次数

  • threshold (float) – 阈值,累积特征重要性

  • drop (boolean) – 是否低于阈值 True: 低于阈值, False : 高于阈值

Returns

高于/低于阈值的特征列表

Return type

list

bm.feature.embedded.gen_model module

class bm.feature.embedded.gen_model.GenCVModel(train_data, target_data)

Bases: CheckDataType

使用交叉验证的方法训练模型

Variables
  • target_data – pd.Dataframe: 目标数据

  • train_data – pd.Dataframe: 训练数据

  • n_splits – int: 交叉验证中原始数据的切分个数

  • kfold – int: 第k份切分数据

cross_validation(params, kfold=None, groups=None, categorical_feature=None, n_splits=5)

数据交叉验证

Parameters
  • params (dict) – the params of estimator

  • kfold (str) – type of cv

  • groups (ndarray or Series) – the groups of split data

  • categorical_feature (list or ndarray) – the category feats of dataframe

  • n_splits (int) – the splits of data

Returns

{
    'result1':
        pd.DataFrame(
            {
            'feature': '特征',
            'importance': '特征重要性',
            'importance_normalized': '特征重要性归一化',
            'cumsum': '累计和'
            }
        )
    ,
    'result2':
        pd.DataFrame(
            {
            'fold': 'fold的名称,fold指代折数'
            'train_auc': '训练集精确度',
            'valid_auc': '验证集精确度',
            'train_ks': '训练集KS散度',
            'valid_ks': '验证集KS散度'
            }
        )
}

static get_ks_score(y_true, y_pred)
class bm.feature.embedded.gen_model.IncreaseCVSelector(train_data, target_data)

Bases: CheckDataType

为根据交叉验证的方法计算得到的特征重要性排序,选择最优特征

Variables
  • feats_importances – pd.Dataframe: 特征重要性数据

  • train_data – pd.Dataframe: 训练数据

  • target_data – pd.Dataframe: 目标数据

get_lgb_cv_score(feats_importances, total_iter, step, incre_params=None, categorical_feature=None, auc_interval=None)

模型通过cv自动筛选特征

Parameters
  • feats_importances (pd.Dataframe) – 特征重要性

  • total_iter (int) – 训练轮的最大迭代器

  • step (int) – 添加特征的数量

  • incre_params (dict) – 增加lgb模型的参数

  • categorical_feature (list) – 特征类别

  • auc_interval (int) – 精度增加的最小间隔

Returns

交叉验证结果的每一步 record_increase_feats (pd.DataFrame): 选择的特征

Return type

result (pd.DataFrame)