Одномерный рейтинг функций для регрессии с использованием F -tests
ранжирует признаки (предикторы), используя F -tests. Таблица idx
= fsrftest(Tbl
,ResponseVarName
)Tbl
содержит переменные предиктора и переменную отклика, и ResponseVarName
- имя переменной отклика в Tbl
. Функция возвращается idx
, который содержит индексы предикторов, упорядоченные по значимости предиктора, что означает idx(1)
- индекс самого важного предиктора. Можно использовать idx
чтобы выбрать важные предикторы для регрессионных задач.
задает дополнительные опции, используя один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации входных аргументов в предыдущих синтаксисах. Для примера можно задать категориальные предикторы и веса наблюдений.idx
= fsrftest(___,Name,Value
)
Оцените предикторы в числовой матрице и создайте столбиковую диаграмму счетов предикторной важности.
Загрузите выборочные данные.
load robotarm.mat
The robotarm
набор данных содержит 7168 обучающих наблюдений (Xtrain
и ytrain
) и 1024 тестовых наблюдения (Xtest
и ytest
) с 32 функциями [1][2].
Оцените предикторы, используя обучающие наблюдения.
[idx,scores] = fsrftest(Xtrain,ytrain);
Значения в scores
являются отрицательными журналами значений p. Если p-значение меньше eps(0)
, затем соответствующее значение баллов Inf
. Перед созданием столбиковой диаграммы определите, scores
ли включает
Inf
значения.
find(isinf(scores))
ans = 1x0 empty double row vector
scores
не включает Inf
значения. Если scores
включает Inf
значения можно заменить Inf
по большому числу перед созданием столбиковой диаграммы в целях визуализации. Для получения дополнительной информации смотрите Rank Predictors в таблице.
Создайте столбиковую диаграмму предиктора важности счетов.
bar(scores(idx)) xlabel('Predictor rank') ylabel('Predictor importance score')
Выберите пять самых важных предикторов. Найдите столбцы этих предикторов в Xtrain
.
idx(1:5)
ans = 1×5
30 24 10 4 5
30-ый столбец Xtrain
является важнейшим предиктором ytrain
.
Оцените предикторы в таблице и создайте столбиковую диаграмму предикторной важности счетов.
Если ваши данные находятся в таблице и fsrftest
ранжирует подмножество переменных в таблице, затем функция индексирует переменные, используя только подмножество. Поэтому хорошей практикой является перемещение предикторов, которые вы не хотите ранжировать, в конец таблицы. Переместите переменную отклика и вектор веса наблюдения также. Затем индексы выходных аргументов согласуются с индексами таблицы. Вы можете переместить переменные в таблицу, используя movevars
функция.
В этом примере используются данные Abalone, [3][4] из репозитория машинного обучения UCI [5]. Загрузите данные и сохраните их в текущей папке с именем 'abalone.data'
.
Сохраните данные в таблице.
tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false); tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height', ... 'WWeight','SWeight','VWeight','ShWeight','NoShellRings'};
Предварительный просмотр первых нескольких строк таблицы.
head(tbl)
ans=8×9 table
Sex Length Diameter Height WWeight SWeight VWeight ShWeight NoShellRings
_____ ______ ________ ______ _______ _______ _______ ________ ____________
{'M'} 0.455 0.365 0.095 0.514 0.2245 0.101 0.15 15
{'M'} 0.35 0.265 0.09 0.2255 0.0995 0.0485 0.07 7
{'F'} 0.53 0.42 0.135 0.677 0.2565 0.1415 0.21 9
{'M'} 0.44 0.365 0.125 0.516 0.2155 0.114 0.155 10
{'I'} 0.33 0.255 0.08 0.205 0.0895 0.0395 0.055 7
{'I'} 0.425 0.3 0.095 0.3515 0.141 0.0775 0.12 8
{'F'} 0.53 0.415 0.15 0.7775 0.237 0.1415 0.33 20
{'F'} 0.545 0.425 0.125 0.768 0.294 0.1495 0.26 16
Последняя переменная в таблице является переменной отклика.
Оцените предикторы в tbl
. Задайте последний столбец NoShellRings
как переменная отклика.
[idx,scores] = fsrftest(tbl,'NoShellRings')
idx = 1×8
3 4 5 7 8 2 6 1
scores = 1×8
447.6891 736.9619 Inf Inf Inf 604.6692 Inf Inf
Значения в scores
являются отрицательными журналами значений p. Если p-значение меньше eps(0)
, затем соответствующее значение баллов Inf
. Перед созданием столбиковой диаграммы определите, scores
ли включает
Inf
значения.
idxInf = find(isinf(scores))
idxInf = 1×5
3 4 5 7 8
scores
включает пять Inf
значения.
Создайте штриховой график с счетами важности предиктора. Используйте имена предикторов для меток такта по оси X.
bar(scores(idx)) xlabel('Predictor rank') ylabel('Predictor importance score') xticklabels(strrep(tbl.Properties.VariableNames(idx),'_','\_')) xtickangle(45)
The bar
функция не строит графики для Inf
значения. Для Inf
значения, столбцы графика, которые имеют ту же длину, что и наибольший конечный счет.
hold on bar(scores(idx(length(idxInf)+1))*ones(length(idxInf),1)) legend('Finite Scores','Inf Scores') hold off
В гистограмму отображаются конечные счета и счета Inf с использованием различных цветов.
Tbl
- Выборочные данныеВыборочные данные, заданный как таблица. Многополюсные переменные и массивы ячеек, отличные от массивов ячеек векторов символов, не разрешены.
Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора. Опционально Tbl
может содержать дополнительные столбцы для переменной отклика и весов наблюдений.
Переменная отклика может быть категориальными символьными или строковыми массивами, логическим или числовым вектором или массивом ячеек из векторов символов. Если переменная отклика является символьным массивом, то каждый элемент переменной отклика должен соответствовать одной строке массива.
Если Tbl
содержит переменную отклика, и необходимо использовать все оставшиеся переменные в Tbl
в качестве предикторов, затем задайте переменную отклика при помощи ResponseVarName
. Если Tbl
также содержит веса наблюдений, затем можно задать веса при помощи Weights
.
Если Tbl
содержит переменную отклика, и необходимо использовать только подмножество остальных переменных в Tbl
в качестве предикторов задайте подмножество переменных при помощи formula
.
Если Tbl
не содержит переменную отклика, затем задает переменную отклика при помощи Y
. Переменная отклика и Tbl
должно иметь одинаковое число строк.
Если fsrftest
использует подмножество переменных в Tbl
в качестве предикторов, тогда функция индексирует предикторы, используя только подмножество. Значения в 'CategoricalPredictors'
аргумент пары "имя-значение" и выходной аргумент idx
не считайте предикторы, которые функция не ранжирует.
fsrftest
рассматривает NaN
, ''
(пустой символьный вектор), ""
(пустая строка), <missing>
, и <undefined>
значения в Tbl
чтобы переменная отклика была отсутствующими значениями. fsrftest
не использует наблюдения с отсутствующими значениями для переменной отклика.
Типы данных: table
ResponseVarName
- Имя переменной откликаTbl
Имя переменной отклика, заданное как вектор символов или строковый скаляр, содержащий имя переменной в Tbl
.
Для примера, если переменная отклика является столбцом Y
от Tbl
(Tbl.Y
), затем задайте ResponseVarName
как 'Y'
.
Типы данных: char
| string
formula
- Объяснительная модель переменной отклика и подмножества переменных предиктораОбъяснительная модель переменной отклика и подмножества переменных предиктора, заданная в виде вектора символов или строкового скаляра в форме 'Y ~ x1 + x2 + x3'
. В этой форме Y
представляет переменную отклика, и x1
, x2
, и x3
представляют переменные предиктора.
Чтобы задать подмножество переменных в Tbl
в качестве предикторов используйте формулу. Если вы задаете формулу, то fsrftest
не ранжирует никакие переменные в Tbl
которые не появляются в formula
.
Имена переменных в формуле должны быть обоими именами переменных в Tbl
(Tbl.Properties.VariableNames
) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl
при помощи isvarname
функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName
функция.
Типы данных: char
| string
Y
- Переменная откликаПеременная отклика, заданная как числовой, категориальный или логический вектор, символьные или строковые массивы или массив ячеек из векторов символов. Каждая строка Y
представляет метки соответствующей строки X
.
fsrftest
рассматривает NaN
, ''
(пустой символьный вектор), ""
(пустая строка), <missing>
, и <undefined>
значения в Y
чтобы быть отсутствующими значениями. fsrftest
не использует наблюдения с отсутствующими значениями для Y
.
Типы данных: single
| double
| categorical
| logical
| char
| string
| cell
X
- Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора.
Типы данных: single
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'NumBins',20,'UseMissing',true
устанавливает количество интервалов равное 20 и задает использование отсутствующих значений в предикторах для ранжирования.'CategoricalPredictors'
- Список категориальных предикторов'all'
Список категориальных предикторов, заданный как одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел |
Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и Если |
Логический вектор |
A |
Матрица символов | Каждая строка матрицы является именем переменной. Имена должны совпадать с именами в Tbl . Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину. |
Строковые массивы или массив ячеек векторов символов | Каждый элемент массива является именем переменной. Имена должны совпадать с именами в Tbl . |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl
), fsrftest
принимает, что переменная категориальна, если это логический вектор, неупорядоченный категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X
), fsrftest
принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors'
аргумент имя-значение.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'NumBins'
- Количество интервалов для непрерывных предикторов раскладываниеКоличество интервалов для раскладывание непрерывных предикторов, заданное как разделенная разделенными запятой парами, состоящая из 'NumBins'
и положительный целочисленный скаляр.
Пример: 'NumBins',50
Типы данных: single
| double
'UseMissing'
- Индикатор того, использовать или отбрасывать отсутствующие значения в предикторахfalse
(по умолчанию) | true
Индикатор того, использовать или отменить отсутствующие значения в предикторах, заданный как разделенная разделенными запятой парами, состоящая из 'UseMissing'
и любой из них true
использовать или false
чтобы отбросить отсутствующие значения в предикторах для рейтинга.
fsrftest
рассматривает NaN
, ''
(пустой символьный вектор), ""
(пустая строка), <missing>
, и <undefined>
значения, которые должны быть отсутствующими значениями.
Если вы задаете 'UseMissing',true
, затем fsrftest
использует отсутствующие значения для рейтинга. Для категориальной переменной, fsrftest
рассматривает отсутствующие значения как дополнительную категорию. Для непрерывной переменной, fsrftest
места NaN
значения в отдельном интервале для раскладывание.
Если вы задаете 'UseMissing',false
, затем fsrftest
не использует отсутствующие значения для ранжирования. Поскольку fsrftest
вычисляет счета важности индивидуально для каждого предиктора, функция не отбрасывает целую строку, когда значения в строке частично отсутствуют. Для каждой переменной, fsrftest
использует все значения, которые не отсутствуют.
Пример: 'UseMissing',true
Типы данных: logical
'Weights'
- Веса наблюденийones(size(X,1),1)
(по умолчанию) | вектор скалярных значений | имя переменной в Tbl
Веса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights'
и вектор скалярных значений или имя переменной в Tbl
. Функция взвешивает наблюдения в каждой строке X
или Tbl
с соответствующим значением в Weights
. Размер Weights
должно равняться количеству строк в X
или Tbl
.
Если вы задаете входные данные как таблицу Tbl
, затем Weights
может быть именем переменной в Tbl
который содержит числовой вектор. В этом случае необходимо задать Weights
как вектор символов или строковый скаляр. Для примера, если вектор веса является столбцом W
от Tbl
(Tbl.W
), затем задайте 'Weights','W'
.
fsrftest
нормализует веса до единицы.
Типы данных: single
| double
| char
| string
idx
- Индексы предикторов, упорядоченные по значимости предиктораИндексы предикторов в X
или Tbl
упорядоченный по значимости предиктора, возвращенный как 1-байт- r числовой вектор, где r - количество ранжированных предикторов.
Если fsrftest
использует подмножество переменных в Tbl
в качестве предикторов, тогда функция индексирует предикторы, используя только подмножество. Например, предположим Tbl
включает 10 столбцов, и вы задаете последние пять столбцов Tbl
как переменные предиктора при помощи formula
. Если idx(3)
является 5
, тогда третьим по значимости предиктором является 10-й столбец в Tbl
, который является пятым предиктором в подмножестве.
scores
- Оценки предиктораПредиктор оценивает, возвращается как 1-байт- r числовой вектор, где r - количество ранжированных предикторов.
Большое значение баллов указывает, что соответствующий предиктор важен.
Например, предположим Tbl
включает 10 столбцов, и вы задаете последние пять столбцов Tbl
как переменные предиктора при помощи formula
. Затем, score(3)
содержит значение баллов 8-го столбца в Tbl
, который является третьим предиктором в подмножестве.
fsrftest
исследует важность каждого предиктора индивидуально, используя F-test. Каждый F-тест проверяет гипотезу о том, что значения отклика, сгруппированные по значениям переменных предиктора, взяты из населений с тем же средним значением против альтернативной гипотезы о том, что средства населения не все одинаковые. Небольшое p -значение тестовой статистики указывает, что соответствующий предиктор важен.
Область выхода scores
is -журнал (p). Поэтому большое значение баллов указывает, что соответствующий предиктор важен. Если p -значение меньше eps(0)
, затем выводится Inf
.
fsrftest
исследует непрерывную переменную после раскладывание, или дискретизации, переменной. Количество интервалов можно задать с помощью 'NumBins'
аргумент пары "имя-значение".
[1] Rasmussen, C. E., R. M. Neal, G. E. Hinton, D. van Camp, M. Revow, Z. Ghahramani, R. Kustra, and R. Tibshirani. Руководство DELVE, 1996.
[2] Университет Торонто, факультет компьютерных наук. Удаление наборов данных.
[3] Нэш, У. Дж., Т. Л. Селлерс, С. Р. Тальбот, А. Дж. Коуторн и У. Б. Форд. "Популяционная биология Абалоне (виды Haliotis) в Тасмании. I. Blacklip Abalone (H. rubra) с Северного побережья и островов пролива Басс ". Деление морского рыболовства, технический доклад № 48, 1994 год.
[4] Waugh, S. «Extending and Benchmarking Cascade-Correlation: Extensions to the Cascade-Correlation Architecture and Benchmarking of Feed-Forward Supervied Neural Networds». Тасманийский университет, кафедра компьютерных наук, 1995 год.
[5] Лихман, M. UCI Machine Learning Repository. Irvine, CA: University of California, School of Information and Computer Science, 2013. http://archive.ics.uci.edu/ml.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.