Я только начал использовать R, и я не уверен, как включить мой набор данных в следующий пример кода:
sample(x, size, replace = FALSE, prob = NULL)
У меня есть набор данных, который мне нужно поместить в тренировочный (75%) и тестовый (25%) набор. Я не уверен, какую информацию я должен поместить в x и размер? Является ли x файл набора данных и размер, сколько образцов у меня есть?
x
может быть индексом (скажем, строки / столбцы) вашегоdata
.size
может быть0.75*nrow(data)
. Попробуйтеsample(1:10, 4, replace = FALSE, prob = NULL)
посмотреть, что он делает.Ответы:
Существует множество подходов для достижения разделения данных. Для более полного подхода взгляните на
createDataPartition
функцию вcaTools
пакете.Вот простой пример:
источник
mtcars[!train_ind]
и хотя это не сработало, это не сработало, как ожидалось. Как я могу использовать подмножество!
?!
используются для логического (TRUE/FALSE
), а не для индексов. Если вы хотите использовать subset!
, попробуйте что-то вроде mtcars [!seq_len(nrow(mtcars)) %in% train_ind
,] (не проверено).createDataPartition
вcaret
и нетcaTools
?Это может быть легко сделано:
Используя пакет caTools :
источник
sample = sample.split(data[,1], SplitRatio = .75)
Следует убрать необходимость называть столбец.Я бы использовал
dplyr
для этого, делает это очень просто. Для этого требуется переменная id в вашем наборе данных, что в любом случае является хорошей идеей не только для создания наборов, но и для отслеживания в ходе вашего проекта. Добавьте его, если он еще не содержится.источник
Это почти тот же код, но в более приятном виде
источник
источник
Я разделю «а» на поезд (70%) и проверю (30%)
сделано
источник
Мое решение в основном такое же, как у дикоа, но немного проще для интерпретации:
источник
Просто более краткий и простой способ использования удивительной библиотеки dplyr :
источник
Default[-train_index,]
для последней строки.Если вы введете:
Если запустить меню справки, чтобы объяснить, что означают параметры функции образца.
Я не эксперт, но вот код, который у меня есть:
Это даст вам 75% тренировку и 25% тест.
источник
После просмотра всех различных методов, опубликованных здесь, я не увидел, чтобы кто-то использовал
TRUE/FALSE
для выбора и отмены выбора данных. Поэтому я решил поделиться методом, использующим эту технику.объяснение
Есть несколько способов выбора данных из R, чаще всего люди используют положительные / отрицательные индексы для выбора / отмены выбора соответственно. Тем не менее, те же функциональные возможности могут быть достигнуты с помощью
TRUE/FALSE
выбора / отмены выбора.Рассмотрим следующий пример.
источник
Мое решение перетасовывает строки, а затем принимает первые 75% рядов в качестве последовательности и последние 25% в качестве теста. Супер просто!
источник
Я могу предложить использовать пакет rsample:
источник
scorecard
Пакет имеет полезную функцию для этого, где вы можете указать соотношение и семянДанные испытаний и поезда, хранятся в виде списка и может быть доступно призванием
dt_list$train
иdt_list$test
источник
Ниже представлена функция, которая создает
list
подвыборки того же размера, что не совсем то, что вы хотели, но может оказаться полезным для других. В моем случае, чтобы создать несколько деревьев классификации на небольших выборках, чтобы проверить их соответствие:Пример :
источник
Использование пакета caTools в примере кода R будет выглядеть следующим образом:
источник
Используйте основание R. Функция
runif
генерирует равномерно распределенные значения от 0 до 1. При изменении значения отсечения (train.size в примере ниже) у вас всегда будет примерно одинаковый процент случайных записей ниже значения отсечения.источник
Предполагая, что df - ваш фрейм данных, и что вы хотите создать 75% -й поезд и 25% -ый тест
Затем создать поезд и проверить кадры данных
источник
sample.split()
Функция добавит один дополнительный столбец «split1» в dataframe и 2/3 строк будет иметь это значение как TRUE , и другие , как FALSE.Now строки , где split1 является TRUE , будет скопирована в поезде и другие строки будут скопированы в тесте dataframe.источник
Я столкнулся с этим, это может помочь тоже.
источник
Мы можем разделить данные на определенное соотношение, здесь оно составляет 80% и 20% в тестовом наборе данных.
источник
Остерегайтесь
sample
расщепления, если вы ищете воспроизводимые результаты. Если ваши данные изменятся даже незначительно, разделение будет отличаться, даже если вы используетеset.seed
. Например, представьте, что отсортированный список идентификаторов в ваших данных - это все числа от 1 до 10. Если вы просто отбросите одно наблюдение, скажем, 4, выборка по местоположению даст другие результаты, потому что теперь 5-10 всех перемещенных мест.Альтернативный метод заключается в использовании хэш-функции для сопоставления идентификаторов некоторым псевдослучайным числам, а затем выборки по модулю этих чисел. Этот образец более стабилен, потому что назначение теперь определяется хешем каждого наблюдения, а не его относительным положением.
Например:
[1] 9999
[1] 5000
[1] 2653
[1] 5057
[1] 5057
размер выборки не точно 5000, потому что назначение является вероятностным, но это не должно быть проблемой в больших выборках благодаря закону больших чисел.
Смотрите также: http://blog.richardweiss.org/2016/12/25/hash-splits.html и /crypto/20742/statistical-properties-of-hash-functions-when вычисляют-модулю
источник
источник
Существует очень простой способ выбрать количество строк, используя индекс R для строк и столбцов. Это позволяет вам ЧИСТО разделить набор данных по количеству строк - скажем, первые 80% ваших данных.
В R все строки и столбцы индексируются, поэтому DataSetName [1,1] - это значение, назначенное первому столбцу и первой строке «DataSetName». Я могу выбрать строки, используя [x,] и столбцы, используя [, x]
Например: если у меня есть набор данных с удобным названием «data» с 100 строками, я могу просмотреть первые 80 строк, используя
Таким же образом я могу выбрать эти строки и установить их подстановки, используя:
Теперь мои данные разбиты на две части без возможности повторной выборки. Быстро и просто.
источник