2017-09-11 23 views
0

訓練とテストの要素の分布がほぼ同じになるように、または列車とテストで少なくとも1つの要素が存在するように、numpy配列(shape =(0、n))をサブサンプルしたい各クラス。例:サブサンプリングnumpy配列。テストと訓練で分布は変わらない

a = [1,2,3,1,3,3,2,1,2,1] 
train = [1,1,2,2,3,3] 
test = [1,1,2,3] 

出力に基づいてパラメータと出力をサブサンプルしたいとします。今のところ、私はランダムなインデックスを取るためにnp.random.choiceを使用しています。 Pythonで配布を確認する方法はありますか?

+0

をサンプリングすることができます。 – Firman

+0

小~100 –

答えて

1

collections Pythonの組み込みライブラリを使用できます。

>>> from collections import Counter 
>>> a = [1,2,3,1,3,3,2,1,2,1] 
>>> count_a = Counter(a) 
>>> count_a 
Counter({1: 4, 2: 3, 3: 3}) 

Counterオブジェクトは辞書のように機能します。データセットは、 `np.random.choice`が作業を行う必要があり、ユニークな要素の数に比べて、十分に大きい場合、そこから、あなたは、つまり、あなたが望むどのように多くの各元素の割合

>>> from itertools import chain 
>>> train_fraction = 0.7 
>>> train = list(chain.from_iterable([[i]*int(max(count_a[i]*train_fraction, 1)) for i in count_a.keys()])) 
>>> train 
[1, 1, 2, 2, 3, 3] 
関連する問題