Orange3连接具有不同目标的表

时间:2016-05-12 14:01:44

标签: orange

我有两个输入数据文件用于橙色,一个对应于火车组(目标" A"," B"" C")和另一个是未知样本(目标" D"" E"能够识别两个第一主成分的散点图中的未知样本)。

我已将PCA应用于火车数据集,并通过python脚本我已将PCA转换重新应用于测试数据集,但结果是?在未知样本集中的所有条目的目标值中。

我试图将列车和未知样本集合并到合并表小部件,显然它也是一样,列车中的所有样本都是正确的,但未知样本有?作为目标。

我设法正常运行的唯一方法是在同一输入文件上设置未知样本和训练集。由于显而易见的原因,这是不切实际的。

有什么方法可以解决这个问题吗?

请注意,我已尝试直接在已转换的未知样本上更改domain.class_var和目标值,但它也会更改训练数据集的域。显然,当创建新表时,它只是在PCA之后引用原始列车数据的域。

1 个答案:

答案 0 :(得分:0)

我通过将数据转换为numpy数组来连接它们然后再返回表来管理它。

以下是有兴趣的代码:

import numpy
from Orange.data.table import Table
from Orange.data import Domain, DiscreteVariable, ContinuousVariable

trnsfrmd_knwn_data = numpy.array(in_object)
trnsfrmd_unkwn_data = numpy.array(Table(in_object.domain,in_data))

ndx = list(set(trnsfrmd_knwn_data[:,len(trnsfrmd_knwn_data[0])-1].tolist()))[-1] + 1
trnsfrmd_unkwn_data[:,len(trnsfrmd_knwn_data[0])-1] = numpy.array([i for i in range(0, len(trnsfrmd_unkwn_data))]) + ndx

targets = in_object.domain.class_var.values + in_data.domain.class_var.values
dm = Domain([ContinuousVariable(x.name) for x in in_object.domain.attributes], DiscreteVariable('region', values=targets))

out_data = Table.from_numpy(dm, numpy.append(trnsfrmd_knwn_data,trnsfrmd_unkwn_data,axis=0))