Разделить фрейм данных по метке (преобразовать фрейм данных в массив numpy) - PullRequest
1 голос
/ 16 июня 2020

У меня есть фрейм данных, и я хочу разделить их на разные массивы в соответствии с их меткой, я не уверен, как фильтровать его по индексу. Не уверен, как это делается правильно:

Пример набора данных (df)

Cancer_Type  | Variable | Data Split | Target
Cancer1         43        Train        Good
Cancer5         34        Train        Bad
Cancer2         34        Test         Good
Cancer3         23        Test         Bad
Cancer4         25        Test         Good

Возможно, вы делаете что-то вроде этого?

#initial split into train/test data
train = df['split'] == 'train'
print("train")
print(train)
test = df['split'] == 'test'
print("valid")
print(test)

X_test = test.values[-1, :-1]
y_test = test.values[-1, -1]

# Get the remaining dataset
X = train.values[:-1, :-1]
y = train.values[:-1, -1]

print("X")
#print(type(X))
#print(X)

print("y")
#print(type(y))
#print(y)

# Split the remaining dataset into train and calibration sets.
X_train, X_cal, y_train, y_cal = train_test_split(X, y)
 
print(X_train.shape, y_train.shape)
print(X_cal.shape, y_cal.shape)

Надеюсь, по строкам .

1 Ответ

1 голос
/ 16 июня 2020

Насколько я понимаю, вы должны sh разделить данные на обучающие и тестовые наборы в соответствии со значением Data Split наблюдения. После этого вы снова разделите поезд на поезд и калибровку. Стандартная методология предварительной обработки данных включает в себя создание наших функций X и нашей цели y.

# Get dataframes of train and test features
X_train = df[df['Data Split'] == 'Train'].drop(columns = ['Target']).to_numpy()
X_test = df[df['Data Split'] == 'Test'].drop(columns = ['Target']).to_numpy()

# Get arrays of train and test targets
y_train = df[(df['Data Split'] == 'Train')]["Target"].to_numpy()
y_test = df[(df['Data Split'] == 'Test')]["Target"].to_numpy()

# Split the train dataset further into train and validation/calibration sets.
X_train, X_cal, y_train, y_cal = train_test_split(X_train, y_train)

Теперь у вас есть набор для обучения, проверки / калибровки и тестирования в виде массива.

Если вы wi sh, чтобы сохранить переменную Target, просто

train = df[df['Data Split'] == 'Train'].to_numpy()
test = df[df['Data Split'] == 'Test'].to_numpy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...