Одномерная функция, занимающая место для регрессии с помощью F - тесты
ранги показывают (предикторы) с помощью F - тесты. Таблица idx
= fsrftest(Tbl
,ResponseVarName
)Tbl
содержит переменные предикторы и переменную отклика и ResponseVarName
имя переменной отклика в Tbl
. Функция возвращает idx
, который содержит индексы предикторов, упорядоченных важностью предиктора, означая idx(1)
индекс самого важного предиктора. Можно использовать idx
выбрать важные предикторы для проблем регрессии.
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно задать категориальные предикторы и веса наблюдения.idx
= fsrftest(___,Name,Value
)
Оцените предикторы в числовой матрице и создайте столбиковую диаграмму баллов важности предиктора.
Загрузите выборочные данные.
load robotarm.mat
robotarm
набор данных содержит 7 168 учебных наблюдений (Xtrain
и ytrain
) и 1 024 тестовых наблюдения (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
большим числовым номером прежде, чем создать столбиковую диаграмму в целях визуализации. Для получения дополнительной информации смотрите Предикторы Ранга в Таблице.
Создайте столбиковую диаграмму баллов важности предиктора.
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
функция.
Этот пример использует данные о Морском ушке [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)
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 и Если |
Логический вектор |
|
Символьная матрица | Каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с именами в 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
Типы данных: логический
'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 - тест. Каждый F - тест тестирует гипотезу, что значения отклика, сгруппированные значениями переменного предиктора, чертятся от популяций с тем же средним значением против альтернативной гипотезы, что средние значения населения не являются всеми одинаковыми. Маленький p - значение тестовой статистической величины указывает, что соответствующий предиктор важен.
Выход scores
- журнал (p). Поэтому большое значение баллов указывает, что соответствующий предиктор важен. Если p - значение меньше, чем eps(0)
, затем выходом является Inf
.
fsrftest
исследует непрерывную переменную после раскладывания, или дискретизации, переменной. Можно задать количество интервалов с помощью 'NumBins'
аргумент пары "имя-значение".
[1] Расмуссен, C. E. Р. М. Нил, Г. Э. Хинтон, Д. ван Кэмп, M. Повторно поклянитесь, З. Гэхрэмани, Р. Кастра и Р. Тибширэни. Руководство DELVE, 1996.
[2] Университет Торонто, кафедра информатики. Пашите наборы данных.
[3] Нэш, W.J., Т. Л. Селлерс, С. Р. Тэлбот, А. Дж. Которн и В. Б. Форд. "Биология Населения Морского ушка (разновидности Haliotis) на Тасмании. I. Морское ушко Blacklip (H. rubra) от Северного Побережья и Островов Пролива Басса". Морское Деление Рыболовства, Технический отчет № 48, 1994.
[4] Во, S. "Расширяя и Тестируя Каскадной Корреляции в сравнении с эталоном: Расширения Архитектуры Каскадной Корреляции и Сравнительное тестирование Feedforward Контролируемые Искусственные Нейронные сети". Университет тезиса Факультета информатики Тасмании, 1995.
[5] Личмен, M. Репозиторий Машинного обучения UCI. Ирвин, CA: Калифорнийский университет, Школа Информатики и вычислительной техники, 2013. http://archive.ics.uci.edu/ml.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.