Dance User Guide
Dance 是一个针对 Dock 模块中由 ensemble docking 产生的对接分数矩阵,进行数据预处理、建模与评估的功能模块。
庞大的对接分数矩阵可以通过Dance模块快速进行数据清洗、划分并用于机器学习建模过程。
数据准备 Data preparation
数据预处理部分。
导入pyCADD.Dance模块的Dancer对象
from pyCADD.Dance import Dancer
dancer = Dancer()
添加Ensemble Docking结果矩阵以进行预处理
# 阳性分子的结果矩阵
dancer.add_pos_dataset('your_positive_matrix_path')
# 阴性分子的结果矩阵
dancer.add_neg_dataset('your_negative_matrix_path')
如果数据集分子的活性未知,使用add_dataset方法添加数据集,活性标签将被设置为Undefined。
dancer.add_dataset('your_matrix_path')
使用prepare_data方法来快速完成数据预处理,包括合并所有添加的数据集,并以0填充缺失值。
dancer.prepare_data()
# 如果不需要填充缺失值 使用
# dancer.prepare_data(fill_na=False)
# 如果需要指定其他值填充缺失值 使用
# dancer.prepare_data(fill_na=True, fill_na_value=0)
返回并查看处理完成的合并数据
dancer.get_merged_data()
保存数据集到文件 pickle文件将被保存至dm_reult/data_pickle/ csv文件将被保存至dm_result/data_csv/
# .pkl/.pickle or .csv
dancer.save('your_file_name')
建模与评估 Modeling and Evaluation
建模与模型评估部分。
导入pyCADD.Dance模块的Matrix与Evaluator对象
from pyCADD.Dance import Matrix, Evaluator
载入预处理完成的数据集 并划分训练与测试集
matrix = Matrix.from_pickle('your_file_name')
# 也可以直接输入DataFrame 并指定随机种子
# matrix = Matrix(your_dataframe)
# 训练集与测试集划分 指定测试集比例、随机种子以及标签列名 下为默认值
# matrix.split_train_test_data(test_size=0.25, random_seed=42, label_col='activity')
# 查看训练集与测试集
# train_data = matrix.get_train_data()
# test_data = matrix.get_test_data()
使用划分好的数据集建立评估器实例
evaluator = Evaluator(matrix)
导入所有需要的模型 并创建模型实例
from sklearn.linear_model import LogisticRegression
# from sklearn.ensemble import RandomForestClassifier
# from xgboost import XGBClassifier
lr = LogisticRegression()
# rf = RandomForestClassifier()
# xgb = XGBClassifier()
设定自定义的模型超参数网格空间 pyCADD.Dance提供了LR RF 与 GBT的默认超参数 您也可以自主指定
from pyCADD.Dance.algorithm import default_params
default_lr_params = default_params.LR_DEFAULT_PARAMS
# default_rf_params = default_params.RF_DEFAULT_PARAMS
# default_gbt_params = default_params.GBT_DEFAULT_PARAMS
# your_params_dict = {'params1':params1, 'params2':params2, ...}
使用评估器实例执行超参数搜索 并将最佳超参数赋予模型
best_lr_params = evaluator.search_params(lr, default_lr_params)
# best_rf_params = evaluator.search_params(rf, default_rf_params)
# best_gbt_params = evaluator.search_params(gbt, default_gbt_params)
lr.set_params(**best_lr_params)
# rf.set_params(**best_rf_params)
# gbt.set_params(**best_gbt_params)
将模型添加至评估器实例中 查看模型参数信息
evaluator.add_clf(lr, 'LR')
# evaluator.add_clf(rf, 'RF')
# evaluator.add_clf(gbt, 'GBT')
evaluator.print_classifier_info()
# 获取所有已添加的模型dict
# evaluator.get_clfs_dict()
使用训练集数据执行多重交叉验证 默认使用30次重复的4折交叉验证
关于 30x4 交叉验证 参阅论文
# 默认评分将使用sklearn.metrics 的 roc_auc_score 函数 可以自定义评分函数
# from sklearn.metrics import roc_auc_score
cv_results = evaluator.repeat_cv(n_repeats=30, k_folds=4, random_seed=42,
# score_func=roc_auc_score
)
# 返回值cv_results为字典类型 并被保存在evaluator.cv_results中
# 结果同步被保存于当前目录下的cv_results.json文件中
# 执行 n x k次交叉验证 记录了每次的结果及单构象排序的最佳值、均值、最差值及标准误差
# {'best_scp: ...',
# 'mean_scp: ...',
# 'worst_scp: ...',
# 'std_scp: ...',
# 'clf_cv_results: {
# 'LR' : [...],
# '...' : [...],
# }
# }
# 使用print_cv_results函数打印交叉验证结果
evaluator.print_cv_results()
使用测试集数据执行模型测试 并计算模型的评分
evaluator.testset_eval()
# 结果被保存于当前目录下的testset_eval_results.json文件中