当前位置:首页>python>Python 机器学习实战:从 Sklearn 基础到药物分子活性预测全流程 (附完整代码)

Python 机器学习实战:从 Sklearn 基础到药物分子活性预测全流程 (附完整代码)

  • 2026-02-28 19:52:06
Python 机器学习实战:从 Sklearn 基础到药物分子活性预测全流程 (附完整代码)
在数据科学和化学信息学(Cheminformatics)领域,机器学习正在发挥着越来越重要的作用。今天,我们将手把手带你走过一个完整的机器学习实战项目!

本文将从最基础的 Scikit-learn (Sklearn) 用法讲起,一步步深入到真实的药物分子数据清洗、特征提取(RDKit)、模型构建、超参数优化以及模型保存。所有代码已整理完毕,建议打开 Jupyter Notebook 跟着敲一遍!


零、 准备工作:环境搭建

在开始之前,请确保你已经安装了以下关键的 Python 库:

Bash

pip install --upgrade scikit-learn pandas scipy joblib# 建议通过 conda 安装 RDKitconda install -c conda-forge rdkitpip install standardiser

一、 Sklearn 基础热身:模型训练与属性探索

在处理复杂的化学数据之前,我们先用经典的开源数据集熟悉一下 Sklearn 的核心 API。Sklearn 的设计非常优雅,几乎所有模型都遵循 fit() (训练) 和 predict() (预测) 的模式。

1. K近邻分类器 (KNN) 与鸢尾花数据集

通过计算样本之间的距离来进行分类,是非常直观的基础算法。

Python

from sklearn import datasetsfrom sklearn.model_selection import train_test_splitfrom sklearn.neighbors import KNeighborsClassifier# 加载鸢尾花数据集iris = datasets.load_iris()iris_X = iris.datairis_y = iris.target# 拆分数据集:70%用于训练,30%用于测试X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.3)# 构建KNN模型并训练knn = KNeighborsClassifier()knn.fit(X_train, y_train)# 进行预测print("预测结果:", knn.predict(X_test))print("真实结果:", y_test)

2. 线性回归与模型属性探索

模型训练好之后,内部会保存很多“学习到”的参数。我们以波士顿房价数据集(或类似回归数据)为例,看看如何提取这些属性:

Python

from sklearn import datasetsfrom sklearn.linear_model import LinearRegression# 引入数据load_data = datasets.load_boston()data_X = load_data.datadata_y = load_data.targetprint("数据维度:", data_X.shape)# 构建并训练线性回归模型model = LinearRegression()model.fit(data_X, data_y)# 预测前4条数据print("预测前4条数据:", model.predict(data_X[:4, :]))# 探索 Sklearn 模型的内置属性和功能print("模型系数 (权重):", model.coef_)print("模型截距:", model.intercept_)print("模型参数:", model.get_params())print("模型R^2评分:", model.score(data_X, data_y))

3. 数据预处理:标准化 (Standardization)

真实世界的数据尺度往往差异巨大。为了防止大数值特征主导模型,我们需要对数据进行缩放处理,使其均值为 0,方差为 1。

Python

from sklearn import preprocessingimport numpy as npa = np.array([[102.73.6],              [-1005, -2],              [1202040]], dtype=np.float64)print("原始数据:\n", a)# 数据标准化print("标准化后的数据:\n", preprocessing.scale(a))

二、 进阶实战:化学分子数据的预处理

1.下载数据集

打开https://pubchem.ncbi.nlm.nih.gov/,搜索框搜索1851,拉到BIOASSAY,找到AID1851的,点击打开

接下来,我们进入真实的业务场景:预测小分子化合物的性质(例如 CYP1A2 酶抑制活性)。我们将使用 pandas 处理表格,使用 RDKit 和 standardiser 处理化学结构。

2. 读取数据与分子结构标准化

我们从 cyp1a2.csv 中读取包含 SMILES 序列的数据,对其进行脱盐、标准化等操作,以确保输入给模型的分子结构是统一且正确的。

Python

import pandas as pdimport numpy as npimport loggingfrom rdkit import Chem from rdkit.Chem import Descriptorsfrom standardiser import standardise# 读取并清理空值df = pd.read_csv('cyp1a2.csv')df = df.dropna()# 遍历数据,进行 SMILES 标准化for i in df.index:try:        smi = df.loc[i, 'SMILES']        mol = Chem.MolFromSmiles(smi)        mol = Chem.AddHs(mol) # 添加氢原子        parent = standardise.run(mol) # 结构标准化        mol_ok_smi = Chem.MolToSmiles(parent)        df.loc[i, 'SMILES'] = mol_ok_smiexcept standardise.StandardiseException as e:        logging.warning(e.message)# 去除重复项df.drop_duplicates(keep='first', inplace=True)

2. 计算分子描述符与数据过滤

我们利用 RDKit 计算分子的物理化学性质(如分子量 MolWt 和脂水分配系数 LogP),并过滤掉异常庞大的分子。

Python

molweight = []logP = []for smi inlist(df['SMILES']):    mol = Chem.MolFromSmiles(smi)    molweight.append(Descriptors.MolWt(mol))    logP.append(Descriptors.MolLogP(mol))# 将计算结果存入 DataFramedf['molecular_weight'] = molweightdf['logP'] = logP# 过滤掉分子量大于1000的宏大分子df = df[df['molecular_weight'] <= 1000]# 保存清洗后的高质量数据df.to_csv('data.csv', index=None)print(df.head())

三、 特征工程与建模评估

机器学习模型看不懂化学结构图,我们需要将 SMILES 转化为模型能理解的“分子指纹”(如 Morgan Fingerprint 和 MACCS keys)。

1. 核心库导入解

在此阶段,我们会用到大量 Sklearn 工具。先来理解它们的作用:

  • KNeighborsClassifier / SVC / RandomForestClassifier: 各种分类算法(KNN、支持向量机、随机森林)。

  • train_test_split: 划分训练集和测试集。

  • GridSearchCV: 超参数优化神器,通过交叉验证自动寻找最佳参数组合。

  • roc_auc_score / confusion_matrix: 模型性能评估工具。

2. 方案 A:Morgan 指纹 + KNN 模型优化

我们将生成 Morgan 指纹(长度为 1024 位的二进制向量),并结合 KNN 算法与网格搜索(GridSearchCV)寻找最佳的 n_neighbors

Python

from rdkit.Chem import AllChemfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.model_selection import train_test_split, GridSearchCVfrom sklearn.metrics import roc_auc_score, confusion_matriximport mathdf = pd.read_csv('data.csv')# 1. 生成 Morgan 分子指纹作为特征 XX = np.array([AllChem.GetMorganFingerprintAsBitVect(Chem.MolFromSmiles(smi), 2, nBits=1024for smi inlist(df['SMILES'])])y = df['Label'].values# 2. 拆分数据集X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)# 3. 构建KNN模型并使用交叉验证优化超参数knn = KNeighborsClassifier()param = {"n_neighbors": [3510]}gc_knn = GridSearchCV(knn, param_grid=param, cv=5, scoring='roc_auc')gc_knn.fit(X_train, y_train)print("KNN 最佳参数组合:", gc_knn.best_params_)# 4. 预测与评估y_pred = gc_knn.predict_proba(X_test)[:, 1# 获取正类的预测概率auc_score = roc_auc_score(y_test, y_pred)print("ROC-AUC 评分:", auc_score)

3. 方案 B:MACCS 密钥 + SVM 模型优化

我们再尝试另一种指纹 MACCS,并使用支持向量机(SVC)。

Python

from rdkit.Chem import MACCSkeysfrom sklearn.svm import SVC# 1. 生成 MACCS keys 作为特征 XX = np.array([MACCSkeys.GenMACCSKeys(Chem.MolFromSmiles(smi)) for smi inlist(df['SMILES'])])y = df['Label'].valuesX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)# 2. 构建模型并定义超参数优化空间svc = SVC(probability=True)param = {"gamma": ['scale''auto'0.1], 'C': [110100]}gc_svc = GridSearchCV(svc, param_grid=param, cv=5, scoring='roc_auc')gc_svc.fit(X_train, y_train) # 注意:如果是大数据集,建议使用 X_train 进行拟合print("SVC 最佳参数组合:", gc_svc.best_params_)

四、 模型评估:硬核指标全解析

有了预测结果 y_pred 和真实标签 y_test,我们如何判断模型到底行不行?以下是必备的评估指标计算全过程:

Python

# 假设我们使用上面跑完的 gc_svc 模型结果y_pred = gc_svc.predict_proba(X_test)[:, 1]auc_roc_score = roc_auc_score(y_test, y_pred)# 将概率转为 0 或 1 的硬标签用于计算混淆矩阵y_pred_print = [round(y, 0for y in y_pred]tn, fp, fn, tp = confusion_matrix(y_test, y_pred_print).ravel()# 计算各项指标se = tp / (tp + fn)sp = tn / (tn + fp)q = (tp + tn) / (tp + fn + tn + fp)mcc = (tp * tn - fn * fp) / math.sqrt((tp + fn) * (tp + fp) * (tn + fn) * (tn + fp))P = tp / (tp + fp)F1 = (P * se * 2) / (P + se)BA = (se + sp) / 2print("TP:", tp, "TN:", tn, "FP:", fp, "FN:", fn)print(f"灵敏度(Se): {se:.3f}, 特异性(Sp): {sp:.3f}, 准确率(Q): {q:.3f}")print(f"MCC: {mcc:.3f}, AUC: {auc_roc_score:.3f}, F1: {F1:.3f}, BA: {BA:.3f}"

📊 核心指标原理解析:

  • TP / TN / FP / FN:真正例、真负例、假正例、假负例。这是所有指标的基础构件。

  • Sensitivity (Se,灵敏度/召回率)$Se = \frac{TP}{TP + FN}$。模型正确识别正类(如:有活性的分子)的比例。

  • Specificity (Sp,特异性)$Sp = \frac{TN}{TN + FP}$。模型正确识别负类的比例。

  • Accuracy (Q,准确率)$Q = \frac{TP + TN}{TP + FN + TN + FP}$。模型整体猜对的比例。

  • MCC (马修斯相关系数)$MCC = \frac{TP \cdot TN - FP \cdot FN}{\sqrt{(TP + FN)(TP + FP)(TN + FN)(TN + FP)}}$。衡量分类的相关性,范围 [-1, 1]。1 为完美分类,0 为随机,面对样本不平衡时非常有效。

  • Precision (P,精确率)$P = \frac{TP}{TP + FP}$。预测出来的正类中,有多少是真的正类。

  • F1 Score$F1 = \frac{2 \cdot P \cdot Se}{P + Se}$。精确率和召回率的调和平均数。

  • AUC-ROC Score:最权威的区分能力指标,范围 [0.5, 1]。越接近 1 模型性能越优异。

(注:如果你的模型跑出高灵敏度、高特异性,且 AUC 达到 0.90 以上,说明你的模型具有非常优秀的分子活性分类能力!)


五、 模型持久化:保存与加载

训练一个优质模型耗时耗力,测试完成后,我们必须要将它保存下来,方便日后直接调用或部署。Python 提供了多种保存方法:

1. 使用内置的 Pickle 库

Python

import pickleimport osfrom sklearn import svm, datasetsos.makedirs('save', exist_ok=True# 创建目录# 训练一个简单的模型作为示例df_model = svm.SVC()iris = datasets.load_iris()X, y = iris.data, iris.targetdf_model.fit(X, y)# 保存模型 (写入二进制序列化文件)withopen('save/clf.pickle''wb'as f:    pickle.dump(df_model, f)# 加载模型并进行预测withopen('save/clf.pickle''rb'as f:    clf_loaded = pickle.load(f)    print("Pickle 加载预测结果:", clf_loaded.predict(X[0:1]))

2. 使用 Joblib (推荐)

对于 Sklearn 中包含大量 Numpy 数组的模型,joblib 库的效率远高于 pickle

Python

import joblib# 保存模型joblib.dump(df_model, 'save/clf.pkl')# 加载模型并预测model_joblib = joblib.load('save/clf.pkl')print("Joblib 加载预测结果:", model_joblib.predict(X[0:1]))

🎉 总结

恭喜你!到这里,我们已经走过了一个基于 Scikit-learn 和 RDKit 的机器学习完整生命周期。从数据标准化的细致操作,到超参数优化的精益求精,再到最后硬核的模型指标评估,你已经掌握了 AI 药物研发数据科学家的必备技能!

赶紧打开你的代码编辑器,把文章里的代码跑通一遍吧!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-28 23:21:21 HTTP/2.0 GET : https://f.mffb.com.cn/a/477232.html
  2. 运行时间 : 0.073978s [ 吞吐率:13.52req/s ] 内存消耗:4,510.77kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=94a0fb42e13496f80ceaa3a553011607
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000424s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000634s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000319s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000264s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000487s ]
  6. SELECT * FROM `set` [ RunTime:0.000178s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000536s ]
  8. SELECT * FROM `article` WHERE `id` = 477232 LIMIT 1 [ RunTime:0.000426s ]
  9. UPDATE `article` SET `lasttime` = 1772292081 WHERE `id` = 477232 [ RunTime:0.001028s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000314s ]
  11. SELECT * FROM `article` WHERE `id` < 477232 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000468s ]
  12. SELECT * FROM `article` WHERE `id` > 477232 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000370s ]
  13. SELECT * FROM `article` WHERE `id` < 477232 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000736s ]
  14. SELECT * FROM `article` WHERE `id` < 477232 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000940s ]
  15. SELECT * FROM `article` WHERE `id` < 477232 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001111s ]
0.075528s