无法生成随机数组的分类标签

时间:2016-07-12 11:20:49

标签: python arrays numpy random random-seed

我有一个随机状态,我使用固定种子来使我的预测结果可复制:

rng = np.random.RandomState(101)
len(finalTestSentences) = 500

我正在尝试使用此种子使用唯一的可能性列表生成随机分类变量数组。这是一个例子(我在训练标签上使用了set来生成我拥有的唯一标签):

unique_train_labels = set([u'bla', u'blee', u'blu', u'ma'])
然后我做了:

categorical_random = np.array[rng.choice(unique_train_labels, len(finalTestSentences))]

但我得到了:

categorical_random = np.array[rng.choice(unique_train_labels, len(finalTestSentences))]
  File "mtrand.pyx", line 1072, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:11545)
ValueError: a must be 1-dimensional or an integer

请注意,这是来自此解决方法here

出了什么问题,我怎样才能实现目标?

1 个答案:

答案 0 :(得分:0)

如果你看一下np.random.choice的定义,你会看到a,人口,被转换为numpy数组

a = np.array(a, copy=False)

如果a是一个集合,则转换稍有不同。例如,np.array([1, 2, 3])给出一个包含三个元素的数组:array([1, 2, 3])np.array({1, 2, 3})给出一个数组,其中元素是一个元素。由于维度问题,numpy引发了ValueError。

为避免这种情况,您可以将您的设置转换为包含以下内容的列表:

rng.choice(list(unique_train_labels), len(finalTestSentences))

或直接使用np.unique获取唯一标签:

rng.choice(np.unique([u'bla', u'blee', u'blu', u'ma']), len(finalTestSentences))