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)