Как получить случайную выборку с учетом 2 массивов? - PullRequest
0 голосов
/ 28 октября 2018

Привет! Я работаю с набором данных Sci Kit для обучения, цифрами и делением данных. Итак, у меня есть массивы X_train и Y_train

Массивы связаны таким образом, что индекс x [0]принадлежит y [0]

print x_train.shape 
(1347, 64)
print y_train.shape
(1347)
print set(y_train) 
(0,1,2,3,4,5,6,7,8,9)

Я хотел бы извлечь случайную выборку из x_train с заданным набором (y), т.е. чтобы повторно сэмплировать мои данные, извлекая только одно случайное наблюдение из набора (y).Однако я не знаю, смогу ли я сделать это с помощью numpy или pandas, у любого есть идея, как с этим справиться ????

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Этот подход я обычно использую для построения фрейма данных и извлечения данных из него.

import numpy as np
import pandas as pd

#Dummy arrays for x and y
x_train = np.zeros((1347,64))
y_train = np.ones((1347))

#First we pair up the arrays according to their index using zip. Only use this 
#method if both arrays are of equal length.
training_dataset = list(zip(x_train,y_train))

#Next we load the dataset as a dataframe using Pandas
df = pd.DataFrame(data=training_dataset)
#Check that the dataframe is what you want
df.head()

#If you would like to extract a random row, you may use 
df.sample(n=1)

#Alternatively if you would like to extract a specific row (eg. 10th row aka index 9)
df.iloc[10]

Я надеюсь, что понял, чего вы хотели достичь, но если нет, не стесняйтесь, дайте мне знать, чтобы я мог изменить свой ответ!

Источники:

Документы Pandas

Выбор строк и столбцов в кадрах данных Pandas

0 голосов
/ 28 октября 2018

Не понятно, что вы хотите сделать.set(y) содержит все доступные метки вашего набора данных X.

В общем (пока вы не укажете, что вам нужно), используйте random.choice:

У вас есть это:

print set(y) 
(0,1,2,3,4,5,6,7,8,9)

Сначала преобразуйте его в список:

index_all = list(set(y))

Теперь случайным образом выберите set(y):

# this is a random index (class/label) from 0 to 9.
random_index = np.random.choice(index_all, 1)

Теперь я вижу 2 варианта (я полагаю, вам нужен Случай 2):

1) Непосредственная повторная выборка x на основе этого случайного индекса (случайного на основеset(y)) И, наконец, если x является массивом пустышек:

x[random_index, :]

Возвращает случайное наблюдение x на основе set(y)

2) Повторите выборку x, но получите случайное наблюдение с меткой y.Метка 'y' определена случайным образом выше (random_index)

x[y==random_index]

Возвращает случайное наблюдение x, связанное с меткой y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...