Найдите индексы для разделения меток в соответствии с заданными пропорциями
Используйте эту функцию, когда вы работаете над задачей классификации машин или глубокого обучения, и вы хотите разделить набор данных на наборы для обучения, проверки и валидации, которые содержат ту же долю значений меток.
задает дополнительные входные параметры, используя пары "имя-значение". Для примера, idxs
= splitlabels(___,Name,Value
)'UnderlyingDatastoreIndex',3
разделяет метки только в третьем базовом datastore комбинированного datastore.
Прочитайте сонеты Уильяма Шекспира с fileread
функция. Извлеките все гласные из текста и преобразуйте их в строчные.
sonnets = fileread("sonnets.txt"); vowels = lower(sonnets(regexp(sonnets,"[AEIOUaeiou]")))';
Подсчитайте количество образцов каждого гласного.
cnts = countlabels(vowels)
cnts=5×3 table
Label Count Percent
_____ _____ _______
a 4940 18.368
e 9028 33.569
i 4895 18.201
o 5710 21.232
u 2321 8.6302
Разделите гласные на набор обучающих данных, содержащий 500 образцы каждого гласного, набор валидации, содержащий 300, и тестовый набор с повторным. Все гласные представлены с равными весами в первых двух наборах, но не в третьем.
spltn = splitlabels(vowels,[500 300]); for kj = 1:length(spltn) cntsn{kj} = countlabels(vowels(spltn{kj})); end cntsn{:}
ans=5×3 table
Label Count Percent
_____ _____ _______
a 500 20
e 500 20
i 500 20
o 500 20
u 500 20
ans=5×3 table
Label Count Percent
_____ _____ _______
a 300 20
e 300 20
i 300 20
o 300 20
u 300 20
ans=5×3 table
Label Count Percent
_____ _____ _______
a 4140 18.083
e 8228 35.94
i 4095 17.887
o 4910 21.447
u 1521 6.6437
Разделите гласные на наборы обучающих данных, содержащие 50% образцов, наборы для валидации, содержащие еще 30%, и наборы для проверки с восстановлением. Все гласные представлены с одинаковым весом на всех трех наборах.
spltp = splitlabels(vowels,[0.5 0.3]); for kj = 1:length(spltp) cntsp{kj} = countlabels(vowels(spltp{kj})); end cntsp{:}
ans=5×3 table
Label Count Percent
_____ _____ _______
a 2470 18.367
e 4514 33.566
i 2448 18.203
o 2855 21.23
u 1161 8.6333
ans=5×3 table
Label Count Percent
_____ _____ _______
a 1482 18.371
e 2708 33.569
i 1468 18.198
o 1713 21.235
u 696 8.6277
ans=5×3 table
Label Count Percent
_____ _____ _______
a 988 18.368
e 1806 33.575
i 979 18.2
o 1142 21.231
u 464 8.6261
Прочитайте сонеты Уильяма Шекспира с fileread
функция. Удалите все неалфавитные символы из текста и преобразуйте их в строчные.
sonnets = fileread("sonnets.txt"); letters = lower(sonnets(regexp(sonnets,"[A-z]")))';
Классифицируйте буквы как согласные или гласные и создайте таблицу с результатами. Отображение первых нескольких строк таблицы.
type = repmat("consonant",size(letters)); type(regexp(letters',"[aeiou]")) = "vowel"; T = table(letters,type,'VariableNames',["Letter" "Type"]); head(T)
ans=8×2 table
Letter Type
______ ___________
t "consonant"
h "consonant"
e "vowel"
s "consonant"
o "vowel"
n "consonant"
n "consonant"
e "vowel"
Отображение количества образцов каждой категории.
cnt = countlabels(T,'TableVariable',"Type")
cnt=2×3 table
Type Count Percent
_________ _____ _______
consonant 46516 63.365
vowel 26894 36.635
Разделите таблицу на два набора, один из которых содержит 60% согласных и гласных, а другой - 40%. Отображение количества образцов каждой категории.
splt = splitlabels(T,0.6,'TableVariable',"Type"); sixty = countlabels(T(splt{1},:),'TableVariable',"Type")
sixty=2×3 table
Type Count Percent
_________ _____ _______
consonant 27910 63.366
vowel 16136 36.634
forty = countlabels(T(splt{2},:),'TableVariable',"Type")
forty=2×3 table
Type Count Percent
_________ _____ _______
consonant 18606 63.363
vowel 10758 36.637
Разделите таблицу на два набора, один из которых содержит 60% каждой конкретной буквы, а другой - 40%. Исключить букву y, которая иногда выступает как согласная, а иногда и как гласная. Отображение количества образцов каждой категории.
splt = splitlabels(T,0.6,'Exclude',"y"); sixti = countlabels(T(splt{1},:),'TableVariable',"Type")
sixti=2×3 table
Type Count Percent
_________ _____ _______
consonant 26719 62.346
vowel 16137 37.654
forti = countlabels(T(splt{2},:),'TableVariable',"Type")
forti=2×3 table
Type Count Percent
_________ _____ _______
consonant 17813 62.349
vowel 10757 37.651
Разделите таблицу на два набора одинакового размера. Включите только буквы e и s. Рандомизируйте наборы.
halves = splitlabels(T,0.5,'randomized','Include',["e" "s"]); cnt = countlabels(T(halves{1},:))
cnt=2×3 table
Letter Count Percent
______ _____ _______
e 4514 64.385
s 2497 35.615
Создайте набор данных, который состоит из 100 Гауссовых случайных чисел. Пометьте 40 чисел следующим A
, 30 как B
, и 30 как C
. Сохраните данные в комбинированном datastore, содержащем два хранилища данных. Первый datastore имеет данные, а второй datastore содержит метки.
dsData = arrayDatastore(randn(100,1)); dsLabels = arrayDatastore([repmat("A",40,1); repmat("B",30,1); repmat("C",30,1)]); dsDataset = combine(dsData,dsLabels); cnt = countlabels(dsDataset,'UnderlyingDatastoreIndex',2)
cnt=3×3 table
Label Count Percent
_____ _____ _______
A 40 40
B 30 30
C 30 30
Разделите набор данных на два набора, один из которых содержит 60% чисел, а другой с остальными.
splitIndices = splitlabels(dsDataset,0.6,'UnderlyingDatastoreIndex',2); dsDataset1 = subset(dsDataset,splitIndices{1}); cnt1 = countlabels(dsDataset1,'UnderlyingDatastoreIndex',2)
cnt1=3×3 table
Label Count Percent
_____ _____ _______
A 24 40
B 18 30
C 18 30
dsDataset2 = subset(dsDataset,splitIndices{2});
cnt2 = countlabels(dsDataset2,'UnderlyingDatastoreIndex',2)
cnt2=3×3 table
Label Count Percent
_____ _____ _______
A 16 40
B 12 30
C 12 30
lblsrc
- Входной источник меткиCombinedDatastore
объектВходной источник метки, заданный как один из следующих:
Категориальный вектор.
Строковый вектор или массив ячеек из векторов символов.
Числовой вектор или массив ячеек из числовых скаляров.
Логический вектор или массив ячеек из логических скаляров.
Таблица с переменными, содержащими любой из предыдущих типов данных.
Datastore, чей readall
функция возвращает любой из предыдущих типов данных.
A CombinedDatastore
объект, содержащий базовый datastore, readall
функция возвращает любой из предыдущих типов данных. В этом случае необходимо задать индекс базового datastore, который имеет значения меток.
lblsrc
должны содержать метки, которые могут быть преобразованы в вектор с дискретным набором категорий.
Пример: lblsrc = categorical(["B" "C" "A" "E" "B" "A" "A" "B" "C" "A"],["A" "B" "C" "D"])
создает источник меток как десятисборный категориальный вектор с четырьмя категориями: A
, B
, C
, и D
.
Пример: lblsrc = [0 7 2 5 11 17 15 7 7 11]
создает источник метки как десятисимпульсный числовой вектор.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| table
| cell
| categorical
p
- Пропорции или количество метокПропорции или числа меток, заданные как целочисленный скаляр, скаляр в области значений (0, 1), вектор целых чисел или вектор дробей.
Если p
является скаляром, splitlabels
находит два разделительных набора индексов и возвращает массив ячеек с двумя элементами в idxs
.
Если p
- целое число, первый элемент idxs
содержит вектор индексов, указывающих на первое p
значения каждой категории меток. Второй элемент idxs
содержит индексы, указывающие на оставшиеся значения каждой категории меток.
Если p
является значением в области значений (0, 1) и lblsrc
имеет Ki элементов в i-й категории, первый элемент idxs
содержит вектор индексов, указывающих на первое p
× Ki значения каждой категории меток. Второй элемент idxs
содержит индексы остальных значений каждой категории меток.
Если p
- вектор с N элементами вида p 1, p 2,..., pN,splitlabels
находит N + 1 разделяющих наборов индексов и возвращает массив ячеек (N + 1) -элемента в idxs
.
Если p
- вектор целых чисел, первый элемент idxs
- вектор индексов, указывающих на первое p 1 значений каждой категории меток, следующего элемента idxs
содержит следующие p 2 значения каждой категории меток и так далее. Последний элемент в idxs
содержит оставшиеся индексы каждой категории меток.
Если p
является вектором дробей и lblsrc
имеет Ki элементов i-й категории, первый элемент idxs
- вектор индексов, конкатенирующих первые p 1 × Ki значения каждой категории, следующего элемента idxs
содержит следующие p 2 × K i значений каждой категории меток и так далее. Последний элемент в idxs
содержит оставшиеся индексы каждой категории меток.
Примечание
Если p
содержит дроби, тогда сумма его элементов не должна быть больше единицы.
Если p
содержит номера значений меток, тогда сумма его элементов не должна быть больше наименьшего количества меток, доступных для любой из категорий меток.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'TableVariable',"AreaCode",'Exclude',["617" "508"]
указывает, что функция разделяет метки на основе кода телефонного города и исключает номера из Бостона и Натика.'Include'
- Метки для включения в наборы индексовМетки для включения в наборы индексов, заданные как вектор или массив ячеек категорий меток. Категории, указанные с этим аргументом, должны быть того же типа, что и метки в lblsrc
. Каждая категория в векторе или массиве ячеек должна совпадать с одной из категорий меток в lblsrc
.
'Exclude'
- Метки, которые нужно исключить из наборов индексовМетки для исключения из наборов индексов, заданные как вектор или массив ячеек категорий меток. Категории, указанные с этим аргументом, должны быть того же типа, что и метки в lblsrc
. Каждая категория в векторе или массиве ячеек должна совпадать с одной из категорий меток в lblsrc
.
'TableVariable'
- Табличная переменная для чтенияТабличная переменная, заданная как вектор символов или строковый скаляр. Если этот аргумент не задан, то splitlabels
использует первую табличную переменную.
'UnderlyingDatastoreIndex'
- Базовый индекс datastoreБазовый индекс datastore, заданный как целочисленный скаляр. Этот аргумент применяется при lblsrc
является CombinedDatastore
объект. splitlabels
считает метки в datastore, полученной с помощью UnderlyingDatastores
свойство lblsrc
.
idxs
- Разделение индексовРазделение индексов, возвращаемое как массив ячеек.
countlabels
| folders2labels
| labeledSignalSet
| Signal Labeler | signalLabelDefinition
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.