コード例 #1
0
def get_model_feature_importance(model,
                                 model_name="default",
                                 outputpath="./",
                                 importance_type='gain',
                                 num_feature=20):
    '''
    lightgbm 画importace函数
    :param model:
    :param model_name:
    :param outputpath:
    :param importance_type:
    :param num_feature:
    :return:
    '''
    try:
        outputpath = outputpath + model_name + "_feature_importance.png"
        ax = lgb.plot_importance(model,
                                 figsize=(20, 13),
                                 importance_type=importance_type,
                                 title="gain_importance",
                                 max_num_features=num_feature)
        plt.savefig(outputpath)
    except:
        logger.error("create model feature fail.")
        return False
    else:
        logger.info("create model feature sucess.")
        return True
コード例 #2
0
def get_model_tree_visual(model,
                          model_name="default",
                          tree_index=1,
                          outputpath="./"):
    '''

    :param model:
    :param model_name:
    :param outputpath:
    :param importance_type:
    :param num_feature:
    :return:
    '''
    try:
        outputpath = outputpath + model_name + "_tree.png"
        ax = lgb.plot_tree(
            model,
            tree_index=tree_index,
            figsize=(20, 13),
        )
        plt.savefig(outputpath)
    except:
        logger.error("create model tree fail.")
        return False
    else:
        logger.info("create model tree sucess.")
        return True
コード例 #3
0
def load_model_from_text(model_file):
    '''
    加载模型
    :param model_file:
    :return:
    '''
    try:
        bst = lgb.Booster(model_file=model_file)
    except:
        logger.error("load model fail.")
        return False
    else:
        logger.info("load model from text sucess")
        return bst
コード例 #4
0
def save_model_as_text(model, model_name="default", outputpath="./"):
    '''
    保存模型
    :param model:
    :param model_name:
    :param outputpath:
    :return:
    '''
    try:
        outputpath = outputpath + model_name + "_lightgbm.txt"
        model.save_model(outputpath)
    except:
        logger.error("save lightgbm model fail.")
        return False
    else:
        logger.info("save lightgbm model sucess")
        return True
コード例 #5
0
def get_model_tree_digraph(model, model_name="default", outputpath="./"):
    '''
    画出tree 的树结构
    :param model:
    :param model_name:
    :param outputpath:
    :param importance_type:
    :param num_feature:
    :return:
    '''
    try:
        outputpath = outputpath + model_name + "_tree_digraph.gv"
        graph = lgb.create_tree_digraph(model, name=model_name)
        graph.render(filename=outputpath)
    except:
        logger.error("create model tree_digrap fail.")
        return False
    else:
        logger.info("create model tree_digrap sucess.")
        return True
コード例 #6
0
def train_lightgbm_model(X_train,
                         Y_train,
                         feature_name,
                         model_param,
                         test_size=0.2):
    '''
    训练lightgbm 给定参数x,y,x所属特征,分裂的结果,model训练的参数
    :param X_train:
    :param Y_train:
    :param feature_name:
    :param test_size:
    :param model_param:
    :return:
    '''
    try:
        x_train, x_test, y_train, y_test = train_test_split(
            X_train, Y_train, test_size=test_size, random_state=42)
        data_train = lgb.Dataset(x_train, y_train, feature_name=feature_name)
        data_test = lgb.Dataset(x_test, y_test, feature_name=feature_name)
        evals_result = {}
        gbm = lgb.train(model_param,
                        data_train,
                        num_boost_round=10000,
                        evals_result=evals_result,
                        valid_sets=[data_test],
                        early_stopping_rounds=50)

        y_train_pred = gbm.predict(x_train)
        train_acc = roc_auc_score(y_train, y_train_pred)
        y_test_pred = gbm.predict(x_test)
        test_acc = roc_auc_score(y_test, y_test_pred)

        logger.info("lightgbm model train auc:" + str(train_acc) +
                    " test auc:" + str(test_acc))
        return gbm, evals_result
    except:
        logger.error("light/gbm model train fail.")
        return False, False
コード例 #7
0
def get_model_train_result(evals_result,
                           model_name="default",
                           outputpath="./"):
    '''
    画出训练结果函数
    :param evals_result:
    :param model_name:
    :param outputpath:
    :return:
    '''
    try:
        outputpath = outputpath + model_name + "_train_result.png"
        ax = lgb.plot_metric(evals_result,
                             metric='binary_logloss',
                             figsize=(20, 13))
        plt.savefig(outputpath)
    except:
        logger.error("create model train result fail.")
        #raise RuntimeError("create model train result fail.")
        return False
    else:
        logger.info("create model train result sucess.")
        return True