Train / Test Split Python - PullRequest
       1

Train / Test Split Python

0 голосов
/ 28 декабря 2018

Существует 250 случайно сгенерированных точек данных, которые получаются следующим образом:

[X, y] = getDataSet()  # getDataSet() randomly generates 250 data points

X выглядит так:

[array([[-2.44141527e-01, 8.39016956e-01],
        [ 1.37468561e+00, 4.97114860e-01],
        [ 3.08071887e-02, -2.03260255e-01],...

В то время как y выглядит так:

y is array([[0.],
            [0.],
            [0.],...

(также содержит 1 с)

Итак, я пытаюсь разделить [X, y] на наборы для обучения и тестирования.Предполагается, что обучающий набор представляет собой случайный выбор из 120 случайно сгенерированных точек данных.Вот как я генерирую обучающий набор:

nTrain = 120

maxIndex = len(X)
randomTrainingSamples = np.random.choice(maxIndex, nTrain, replace=False)
trainX = X[randomTrainingSamples, :]  # training samples
trainY = y[randomTrainingSamples, :]  # labels of training samples    nTrain X 1

Теперь я не могу понять, как получить набор для тестирования, который представляет собой 130 других случайно сгенерированных точек данных, которыене включены в учебный набор:

testX =  # testing samples
testY =  # labels of testing samples nTest x 1

Предложения очень ценятся.Спасибо!

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Вы можете перетасовать индекс и выбрать первые 120 в качестве поезда, а следующие 130 в качестве теста

random_index = np.random.shuffle(np.arange(len(X)))
randomTrainingSamples = random_index[:120]
randomTestSamples = random_index[120:250]

trainX = X[randomTrainingSamples, :] 
trainY = y[randomTrainingSamples, :] 

testX = X[randomTestSamples, :]
testY = y[randomTestSamples, :]
0 голосов
/ 28 декабря 2018

Вы можете попробовать это.

randomTestingSamples = [i for i in range(maxIndex) if i not in randomTrainingSamples]
testX =  X[randomTestingSamples, :]  # testing samples
testY =  y[randomTestingSamples, :]  # labels of testing samples nTest x 1
0 голосов
/ 28 декабря 2018

Вы можете использовать sklearn.model_selection.train_test_split:

import numpy as np
from sklearn.model_selection import train_test_split

X, y = np.ndarray((250, 2)), np.ndarray((250, 1))

trainX, testX, trainY, testY = train_test_split(X, y, test_size= 130)

trainX.shape
# (120, 2)
testX.shape
# (130, 2)
trainY.shape
# (120, 1)
testY.shape
# (130, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...