基于结构-活性相互作用数据,使用SVM(支持向量机),尝试判断测试化合物的活性。
SVM
SVM:(Support Vector Machine, 支持向量机)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。
SVM参数
参数网络很多解释,大家可以自己查询了解
基于SVM的二分类活性预测模型
导入库
import copy
import collections
import pandas as pd
import numpy as np
from rdkit import Chem
from rdkit.Chem import Descriptors
from rdkit.ML.Descriptors import MoleculeDescriptors
from sklearn import model_selection
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn import preprocessing
from sklearn.svm import SVC
载入数据,并准备
active_mols = [ mol for mol in Chem.SDMolSupplier("actives_mols.sdf")]
inactive_mols = [ mol for mol in Chem.SDMolSupplier("decoys_mols.sdf")]
active_label = np.ones(len(active_mols)) # 活性化合物:1
inactive_label = np.zeros(len(inactive_mols)) # 非活性化合物:0
mols = active_mols + inactive_mols
label = np.concatenate([active_label, inactive_label])