2016-07-12 2 views
0

のランダムな配列を生成することができません:私は配列を生成するには、この種を使用しようとしています私は私が私の予測結果を複製するために使用していた固定シードとランダムな状態持っているカテゴリラベル

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

どうやって目標を達成することができますか?

+2

。一意のものを取得したらリストに変換することができます。 'rng.choice(list(unique_train_labels)、len(finalTestSentences))' – ayhan

+0

@ayhanそれを解決しました。入力として、あなたは 'random.choice'のために一意でないリストを取ることさえできます –

+0

私は実装に関しては確信しています。それは、(より頻繁に出現する場合)非ユニークなものに対する偏見を導入するかもしれない。私が試してみましょう。 – ayhan

答えて

0

あなたがnp.random.choiceの定義を見れば、あなたはそのaを参照してくださいよ、人口は、設定されている場合、変換は少し異なっている

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

でnumpyの配列に変換されます。たとえば、np.array([1, 2, 3])は、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)) 
関連する問題