type
status
date
slug
summary
tags
category
icon
password

1. 安装库和导入库

  • 作用:这些命令用于安装必要的Python库。q标志用于抑制输出,使安装过程更简洁。
  • 优化建议:与其每次都单独安装库,你可以创建一个requirements.txt文件,列出所有库及其版本,然后通过pip install -r requirements.txt一次性安装所有库。
  • 作用:导入必要的模块和库。每个库都有特定的作用:
    • os, pickle, tqdm:用于文件操作,保存/加载模型,以及显示进度条。
    • pandas, numpy:用于数据操作和数值计算。
    • scikit-learn组件:用于模型训练、特征选择和数据标准化。
    • rdkit:用于化学相关操作,如生成分子指纹。
    • xgboost, catboost:用于高级机器学习模型。
    • tensorflow:用于深度学习模型。
  • 优化建议:导入库的结构已经很好。确保只导入需要的内容,以保持代码简洁高效。

2. 特征提取函数

  • 作用:禁用RDKit的日志记录,避免输出中出现不必要的警告信息。
  • 优化建议:这是个好习惯,可以保持输出的清洁。
  • 作用
    • mfgen函数:生成分子指纹,这是一种二进制向量,表示某些分子特征的存在与否。
    • nBits=2048:指纹向量的长度。
    • radius=2:半径决定了考虑的分子子结构的大小。
    • eval:将字符串位转换为整数(0或1)。
  • 优化建议:使用eval可能存在安全隐患且速度较慢。更安全且更快的替代方法是使用列表推导式中的int(bit)

    3. 加载数据和生成指纹

    • 作用
      • vec_cpd_lst函数:将一列SMILES字符串转换为分子指纹。
      • set:去除重复的SMILES字符串,以节省计算时间。
      • tqdm:显示进度条,用于跟踪转换过程。
      • smi_vec_map:一个字典,用于将SMILES字符串映射到其指纹向量。
    • 优化建议
      • 你可以使用类似joblib的库对SMILES到指纹的转换进行并行处理,以加快大数据集的处理速度。
      • 如果tqdm影响速度,可以考虑使用一个更简洁的进度跟踪器。

    4. 检查和加载数据集

    • 作用:定义数据集文件的路径。
    • 优化建议:无,需要的操作非常直观。
    • 作用:确保数据集文件存在,如果文件不存在则抛出错误。
    • 优化建议:你可以将这些检查合并为一个代码块,使代码更加简洁:
      • 作用:将数据集加载到pandas DataFrame中,以便于后续数据操作。
      • 优化建议:如果数据集很大,你可以使用dask或使用pandas.read_csv中的chunksize参数来更好地管理内存。

      5. 提取和转换SMILES字符串

      • 作用:从DataFrame列中提取SMILES字符串,并将它们转换为列表。
      • 优化建议:无,这种方法已非常高效。
      • 作用:将SMILES列表转换为指纹向量,并将它们连接起来,形成特征矩阵train_xtrain_y则是目标变量(产率)。
      • 优化建议
        • 如果内存使用是个问题,您可以将中间结果(如指纹)保存到磁盘,并根据需要加载它们。
        • 确保vec_cpd_lst对于大型数据集进行了优化,因为它是一个性能瓶颈。

      6. 处理测试数据

      • 作用:对测试数据执行与训练数据相同的操作,以生成用于预测的特征。
      • 优化建议:与处理训练数据相似,可以考虑并行化和内存优化。

      7. 标准化和特征选择

      • 作用:标准化特征,使其均值为0,标准差为1,这有助于模型更快收敛并提高性能。
      • 优化建议:无,这是标准做法。
      • 作用
        • 使用RandomForestRegressor来识别并选择重要特征。
        • SelectFromModel选择重要性高于某个阈值的特征。
      • 优化建议
        • 你可以尝试不同的特征选择方法或调整阈值,以找到最佳的特征集合。
        • 使用交叉验证来选择最佳特征,可能会提高模型性能。

      8. 训练优化后的模型

      • 作用
        • 定义多个优化后的回归模型:
          • RandomForestRegressor:使用更多树木和更深的树提高模型的表现。
          • XGBRegressor:调整学习率和深度,使用gpu_hist方法加速训练。
          • CatBoostRegressor:设置GPU加速,并调整深度和学习率。
          • KNeighborsRegressor:设置邻居数。
          • GradientBoostingRegressor:调整学习率、深度和树的数量。
      • 优化建议
        • 可以通过交叉验证(如GridSearchCVRandomizedSearchCV)来进一步优化这些超参数。
        • 你可以为每个模型保存最优参数,以提高预测准确性。

      9. 训练模型

      • 作用:训练各个模型,使用优化后的参数对选定的特征进行拟合。
      • 优化建议
        • 对于每个模型,考虑加入交叉验证来评估模型的性能,确保模型不过拟合。
        • 使用训练日志记录训练时间和模型性能,以便日后比较。

      10. 定义并训练神经网络模型

      • 作用:定义一个简单的神经网络模型:
        • input_dim:输入层的维度。
        • *Dense*层:全连接层,分别有128和64个神经元,使用ReLU激活函数。
        • compile:编译模型,使用Adam优化器和均方误差作为损失函数。
      • 优化建议
        • 考虑使用正则化技术(如Dropout)以防止过拟合。
        • 调整网络层数和神经元数量,可能会提高模型的表现。
        • 使用learning_rate_scheduler来动态调整学习率,提高训练效率。
      • 作用
        • 创建并训练神经网络模型。
        • epochs=50:训练50轮。
        • batch_size=32:每批次使用32个样本。
        • validation_split=0.2:从训练集中分离20%数据作为验证集。
      • 优化建议
        • 通过早停(Early Stopping)来自动停止训练过程,以避免过拟合。
        • 尝试调整epochsbatch_size,以找到最优的训练配置。

      11. 创建堆叠和投票回归模型

      • 作用
        • StackingRegressor:使用多个模型(如XGBoost、CatBoost等)作为基础模型,并使用另一个XGBoost模型作为最终的元模型,进行堆叠回归。
      • 优化建议
        • 可以对元模型进行优化,选择更复杂的模型(如RandomForestRegressor或深度学习模型)作为元模型。
      • 作用
        • VotingRegressor:通过投票方式组合多个模型的预测结果,最终取平均值。
      • 优化建议
        • 尝试使用加权投票,给予表现较好的模型更高的权重。

      12. 训练堆叠模型和投票回归模型

      • 作用:训练堆叠模型和投票回归模型。
      • 优化建议
        • 训练前,可以先对各个模型进行验证,确保其个体表现良好再进行堆叠或投票组合。
        • 使用更多的特征或改进特征工程,可能会提高模型的准确性。

      13. 保存和加载模型

      • 作用:使用pickle保存堆叠模型和投票回归模型,以便之后加载使用。
      • 优化建议
        • 可以使用joblib代替pickle来保存模型,joblib在保存大数组或复杂对象时性能更好。
      • 作用:加载之前保存的模型,以便后续进行预测。
      • 优化建议:无,这部分代码简单而高效。

      14. 进行预测

      • 作用
        • 使用堆叠模型、投票回归模型和神经网络模型对测试数据进行预测。
        • flatten()将神经网络预测的结果从二维转换为一维数组。
      • 优化建议
        • 可以使用不同模型的预测结果进行比较和分析,以选择最终的最佳预测方式。

      15. 集成预测和生成提交文件

      • 作用:将三个模型的预测结果取平均值,作为最终的预测结果。
      • 优化建议
        • 可以尝试不同的集成方法,比如加权平均或通过逻辑回归进一步整合预测结果。
      • 作用
        • 生成一个提交文件,其中包含预测结果,格式为rxnid,Yield
      • 优化建议
        • 在生成文件之前,可以对预测结果进行后处理(如剪裁或标准化),以确保提交结果在合理的范围内。
      • 作用:确认提交文件已成功创建。
      • 优化建议:无,这部分代码很直接。
      论文架构鼠疫
      Loading...