采样

KfSMT 提供了多种不同的采样方式在采样空间中生成一系列的样本点,用于后续的训练等任务,包括不融合知识的采样方式和融合知识的采样方式。

采样部分的类图如下:

../../_images/%E9%87%87%E6%A0%B7%E9%83%A8%E5%88%86%E7%B1%BB%E5%9B%BE.png

SampingBase为所有采样方法的基类,Random对应着简单随机采样,LHS为拉丁超立方采样,FullFactorial为全因素采样。 KnowledgeSamplingBase为融合知识进行采样的基类,DySampling为融合知识的动态采样。

SampingBase类中的属性

名称

类型

含义

xlimts

dict

需要采样的参数和其对应的采样区间

SampingBase类中的API

名称

作用

sample(nt,table = None)

按照划定的采样空间生成一定数量的采样点

__init__(xlimts)

构造函数,用于传入xlimts

参数:

  • xlimts,类型为dict,需要采样的参数和其对应的采样区间

示例::

from data import LHS
xlimts = {“x1”: [0,60], “x2”: [0,40] , “x3”: [0,15]}
lhs = LHS (xlimts)

sample(nt, table = None)→ ndarray[nt,nx]

采样函数,可以选择是否生成采样表

参数:

  • nt, 类型为int,生成采样点的个数

  • table,默认为None,可以接受str格式,生成采样表的路径,默认不生成采样表

返回:

  • ndarray[nt,nx],生成的采样点矩阵,nt为采样点的个数,nx为输入的维度

示例::

from data import LHS
xlimts = {“x1”: [0,60], “x2”: [0,40] , “x3”: [0,15]}
lhs = LHS (xlimts)
points = lhs.sample (100)

KnowledgeSamplingBase类中的属性

名称

类型

含义

knowledgeSet

list

采样过程中需要使用到的知识集合

KnowledgeSamplingBase类中的API

名称

作用

setKnowledge (*args,knowledgeList = None)

设置采样所需要的知识

setKnowledge (*args,knowledgeList) → None (只有空间型的知识)

设置采样需要的知识

参数:

  • args, 类型为dict,需要的知识字典,可以重复输入

  • knowledgelist,默认为None,可接受的类型为list,多条知识dict组成的集合。

返回:None

示例::

from data import DySampling
from knowledge import KnowledgeSet
set = Knowledge("C:\data\测试1.txt", "C:\data\测试2.txt", "C:\data\测试3.txt",knowledgeList = ["C:\data\测试4.txt", "C:\data\测试5.txt", "C:\data\测试6.txt"])
#将多条xml格式的知识读取为知识list
Knowlist = set.readknowledge()
xlimts = {“x1”: [0,60], “x2”: [0,40] , “x3”: [0,15]}
#设置采样区间
Dy = DySampling (xlimts)
Dy. setKnowledge (knowledgeList = Knowlist)
#设置知识