2016-05-04 3 views
0

Я пытаюсь разделить данные на обучение, проверку и тестирование с помощью numpy и pandas.Выбор строк на основе диапазона векторных значений в Pandas

Я знаю, что это работает (это из sklearn Iris примера):

DataFrame['is_train'] = np.random.uniform(0, 1, len(train)) <= .75 
train, test = DataFrame[DataFrame['is_train']==True], DataFrame[DataFrame['is_train']==False] 

Но как мне сделать что-то подобное для диапазона значений, например, .33 < < х .66?

Это не работает:

DataFrame['segment'] = np.random.uniform(0, 1, len(df)) 
DataFrame[DataFrame['segment'] < .33 & DataFrame['segment'] < .66] 

Наконец, если вы знаете о лучшем способе, скажите на милость.

Насколько я знаю, sklearn's cross_validation.train_test_split() не выполняет трехсторонние расщепления.

+0

Ошибка: DataFrame [DataFrame ['segment']> .33 & DataFrame ['segment'] <.66] Для ответа Edchum's понятен и краток! – ysearka

ответ

1

Оберните условия в скобках:

DataFrame[(DataFrame['segment'] < .33) & (DataFrame['segment'] < .66)] 

Оператор & имеет более высокий приоритет, чем <: https://docs.python.org/2/reference/expressions.html#operator-precedence

Кроме того, как правило, один разбивает данные в различные расколы в соответствии с любой критерий вы хотите: http://scikit-learn.org/stable/modules/cross_validation.html#cross-validation и вы итерации по различным расколам, чтобы проверить надежность вашей модели. Не так ли полезно, чтобы IMO установил фиксированную проверку, как вы знаете, насколько представительным является этот набор проверки?

+0

Спасибо. Не могли бы вы узнать, можно ли сделать трехсторонний раскол с помощью cross_validation.train_test_split()? – zadrozny

+0

Зачем вам нужен набор для проверки? Не лучше ли будет генерировать тестовые ракеты поезда и усреднить перпендикулярность этих разделов? – EdChum

+0

Возможно. Это упражнение, над которым я работаю. И я хотел бы знать, как это сделать. – zadrozny

Смежные вопросы