3.12 Splitters
DeepChem的dc.splits.Splitter对象是分割DeepChem数据集以进行机器学习的有用工具。核心思想是,当评估机器学习模型时,从源数据产生训练集,验证集,测试集是非常有用的。训练集用于训练模型,验证集用于评价不同的模型架构。测试集最后用于评估模型的性能。
dc.splits模型包括科学的分割器。很多情况下,我们需要更多的评估科学的深度学习模型比标准的深度模型,因为我们要寻找新领域的泛化能力。这里的一些分割器是有用的。
Contents
General Splitters
– RandomSplitter
– RandomGroupSplitter
– RandomStratifiedSplitter
– SingletaskStratifiedSplitter
– IndexSplitter
– SpecifiedSplitter
– TaskSplitter
Molecule Splitters
– ScaffoldSplitter
– MolecularWeightSplitter
– MaxMinSplitter
– ButinaSplitter
– FingerprintSplitter
Base Splitter (for develop)
3.12.1 General Splitters
RandomSplitter
class RandomSplitter
随机数据分割的类。
split(dataset: deepchem.data.datasets.Dataset, frac_train: float = 0.8, frac_valid: float = 0.1,
frac_test: float = 0.1, seed: Optional[int] = None, log_every_n: Optional[int] = None) →
Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]
随机将内部分子分割为训练集/验证集/测试集。
参数
dataset (Dataset) – 被分割的数据集。
seed (int, optional (default None)) – 使用的随机种子。
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
frac_valid (float, optional (default 0.1)) – 分到验证集中的数据的占比。
frac_test (float, optional (default 0.1)) – 分到测试集中的数据的占比。
seed – 使用的随机种子。
log_every_n (int, optional (default None)) – 每n个样本记录 (当前不用)。
返回训练索引、验证索引、测试索引的元组。每个索引是一个numpy数组。
返回类型Tuple[np.ndarray, np.ndarray, np.ndarray]
k_fold_split(dataset: deepchem.data.datasets.Dataset, k: int, directories: Optional[
List[str]] = None, **kwargs) → List[Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset]]
参数
dataset (Dataset) – 进行k-折分割的数据集
k (int) – 数据集交要分割的折数。
directories (List[str], optional (default None)) – 长度为2*k个文件路径列表来保存生成的disk-datasets。
返回k元组 (train, cv) 长度列表,其中 train和cv均为Dataset。
返回类型列表[Tuple[Dataset, Dataset]]
train_test_split(dataset: deepchem.data.datasets.Dataset, train_dir: Optional[str] = None,
test_dir: Optional[str] = None, frac_train: float = 0.8, seed: Optional[
int] = None, **kwargs) → Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset]
分割self到train/test集
返回训练/测试的数据集对象。
参数
dataset (data like object) – 被分割的数据集。
train_dir (str, optional (default None)) – 如指明,产生的训练数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
test_dir (str, optional (default None)) –如指明,产生的测试数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
seed (int, optional (default None)) – 使用的随机种子。R
返回作为dc.data.Dataset 对象的训练集和测试集的元组。
返回类型 Tuple[Dataset, Dataset]
train_valid_test_split(dataset: deepchem.data.datasets.Dataset, train_dir: Optional[str]
= None, valid_dir: Optional[str] = None, test_dir: Optional[str]
= None, frac_train: float = 0.8, frac_valid: float = 0.1,
frac_test: float = 0.1, seed: Optional[int] = None, log_every_n:
int = 1000, **kwargs) → Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset, deepchem.data.datasets.Dataset]
将self分割为训练集/验证集/测试集。.
返回训练集/验证集/测试集的数据集对象。.
参数
dataset (Dataset) –被分割的数据集。
train_dir (str, optional (default None)) – 如指明,产生的训练数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
valid_dir (str, optional (default None)) – 如指明,产生的验证数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
test_dir (str, optional (default None)) – 如指明,产生的测试数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
frac_valid (float, optional (default 0.1)) – 分到验证集中的数据的占比。
frac_test (float, optional (default 0.1)) – 分到测试集中的数据的占比。?
seed (int, optional (default None)) – 使用的随机种子。
log_every_n (int, optional (default 1000)) – 能过指明记录器的输出频率来控制记录器。
返回作为 dc.data.Dataset对象的训练集、验证集、测试集的元组。
返回类型 Tuple[Dataset, Optional[Dataset], Dataset]
RandomGroupSplitter
class RandomGroupSplitter(groups: Sequence)
基于分组进行随机分割
基于分组进行分割的分割器类。一个应用场景是分子有多个构像共享同的扩朴结构。分割器保证分割结果保存基团。
注意它不进行动态规划或试图最大化选择如frac_train, frac_valid, 或frac_test最大化。它只是排列基团。因此基团原素显著不同时需要小心使用。
__init__(groups: Sequence)
初始化对象
参数 groups (Sequence) – 指示基团的数组。长度等于len(dataset.X)。
注意: 基团的例子如下
groups : 3 2 2 0 1 1 2 4 3
dataset.X : 0 1 2 3 4 5 6 7 8
groups : a b b e q x a a r
dataset.X : 0 1 2 3 4 5 6 7 8
split(dataset: deepchem.data.datasets.Dataset, frac_train: float = 0.8, frac_valid: float = 0.1,
frac_test: float = 0.1, seed: Optional[int] = None, log_every_n: Optional[int] = None) →
Tuple[List[int], List[int], List[int]]
返回指定分割索引
参数
dataset (Dataset) – 被分割的数据集.
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
frac_valid (float, optional (default 0.1)) – 分到验证集中的数据的占比。
frac_test (float, optional (default 0.1)) – 分到测试集中的数据的占比。
seed (int, optional (default None)) – 使用的随机种子。
log_every_n (int, optional (default None)) – 每n个样本记录 (当前不用)。
返回不同分割的元组 (train_inds, valid_inds, test_inds of the indices (integers)。
返回类型 Tuple[List[int], List[int], List[int]]
k_fold_split(dataset: deepchem.data.datasets.Dataset, k: int, directories: Optional[
List[str]] = None, **kwargs) → List[Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset]]
参数
dataset (Dataset) – 进行k-折分割的数据集
k (int) – 数据集交要分割的折数。
directories (List[str], optional (default None)) – 长度为2*k个文件路径列表来保存生成的disk-datasets。
返回k元组 (train, cv) 长度列表,其中 train和cv均为Dataset。
返回类型列表[Tuple[Dataset, Dataset]]
train_test_split(dataset: deepchem.data.datasets.Dataset, train_dir: Optional[str] = None,
test_dir: Optional[str] = None, frac_train: float = 0.8, seed: Optional[
int] = None, **kwargs) → Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset]
分割self到train/test集
返回训练/测试的数据集对象。
参数
dataset (data like object) – 被分割的数据集。
train_dir (str, optional (default None)) – 如指明,产生的训练数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
test_dir (str, optional (default None)) –如指明,产生的测试数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
seed (int, optional (default None)) – 使用的随机种子。R
返回作为dc.data.Dataset 对象的训练集和测试集的元组。
返回类型 Tuple[Dataset, Dataset]
train_valid_test_split(dataset: deepchem.data.datasets.Dataset, train_dir: Optional[str]
= None, valid_dir: Optional[str] = None, test_dir: Optional[str]
= None, frac_train: float = 0.8, frac_valid: float = 0.1,
frac_test: float = 0.1, seed: Optional[int] = None, log_every_n:
int = 1000, **kwargs) → Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset, deepchem.data.datasets.Dataset]
将self分割为训练集/验证集/测试集。.
返回训练集/验证集/测试集的数据集对象。.
参数
dataset (Dataset) –被分割的数据集。
train_dir (str, optional (default None)) – 如指明,产生的训练数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
valid_dir (str, optional (default None)) – 如指明,产生的验证数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
test_dir (str, optional (default None)) – 如指明,产生的测试数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
frac_valid (float, optional (default 0.1)) – 分到验证集中的数据的占比。
frac_test (float, optional (default 0.1)) – 分到测试集中的数据的占比。?
seed (int, optional (default None)) – 使用的随机种子。
log_every_n (int, optional (default 1000)) – 能过指明记录器的输出频率来控制记录器。
返回作为 dc.data.Dataset对象的训练集、验证集、测试集的元组。
返回类型 Tuple[Dataset, Optional[Dataset], Dataset]
RandomStratifiedSplitter
class RandomStratifiedSplitter
RandomStratified分割器类
对于稀疏多任务数据集,标准的分割不能保证分割分得到有活性的化合物。
该尽量安排使得每个任务都有一定比例的活性化合物。这对于单任务有严格的保证,但对于多任务数据集通常可以为每一个任务得到很准确的活性化合物分割结果。
注意:这个分割器主要用于布尔型标签数据。它只考虑标签为零还是非零。当标签有多个非零值时,它不会给每个分割一定比例的每个值。
split(dataset: deepchem.data.datasets.Dataset, frac_train: float = 0.8, frac_valid: float = 0.1,
frac_test: float = 0.1, seed: Optional[int] = None, log_every_n: Optional[int] = None) →
Tuple
返回指定分割的索引
参数
seed (int, optional (default None)) – 使用的随机种子。
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
frac_valid (float, optional (default 0.1)) – 分到验证集中的数据的占比。
frac_test (float, optional (default 0.1)) – 分到测试集中的数据的占比。
log_every_n (int, optional (default None)) – 通过指定日志频率来控制日志。
返回训练索引、验证索引、测试索引的元组。每个索引是一个numpy数组。
返回类型Tuple
k_fold_split(dataset: deepchem.data.datasets.Dataset, k: int, directories: Optional[
List[str]] = None, **kwargs) → List[Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset]]
参数
dataset (Dataset) – 进行k-折分割的数据集
k (int) – 数据集交要分割的折数。
directories (List[str], optional (default None)) – 长度为2*k个文件路径列表来保存生成的disk-datasets。
返回k元组 (train, cv) 长度列表,其中 train和cv均为Dataset。
返回类型列表[Tuple[Dataset, Dataset]]
train_test_split(dataset: deepchem.data.datasets.Dataset, train_dir: Optional[str] = None,
test_dir: Optional[str] = None, frac_train: float = 0.8, seed: Optional[
int] = None, **kwargs) → Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset]
分割self到train/test集
返回训练/测试的数据集对象。
参数
dataset (data like object) – 被分割的数据集。
train_dir (str, optional (default None)) – 如指明,产生的训练数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
test_dir (str, optional (default None)) –如指明,产生的测试数据集贮存的地方。
只在isinstance(dataset, dc.data.DiskDataset)为真时考虑。
frac_train (float, optional (default 0.8)) – 分到训练集中的数据的占比。
seed (int, optional (default None)) – 使用的随机种子。R
返回作为dc.data.Dataset 对象的训练集和测试集的元组。
返回类型 Tuple[Dataset, Dataset]
train_valid_test_split(dataset: deepchem.data.datasets.Dataset, train_dir: Optional[str]
= None, valid_dir: Optional[str] = None, test_dir: Optional[str]
= None, frac_train: float = 0.8, frac_valid: float = 0.1,
frac_test: float = 0.1, seed: Optional[int] = None, log_every_n:
int = 1000, **kwargs) → Tuple[deepchem.data.datasets.Dataset,
deepchem.data.datasets.Dataset, deepchem.data.datasets.D