Одномерное ранжирование элементов для классификации с использованием тестов хи-квадрат
ранжирует особенности (предикторы) с помощью тестов хи-квадрат. Стол idx = fscchi2(Tbl,ResponseVarName)Tbl содержит переменные предиктора и переменную ответа, и ResponseVarName - имя переменной ответа в Tbl. Функция возвращает idx, который содержит индексы предикторов, упорядоченные по важности предиктора, что означает idx(1) является индексом самого важного предиктора. Вы можете использовать idx для выбора важных предикторов для проблем классификации.
указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно указать предыдущие вероятности и веса наблюдений.idx = fscchi2(___,Name,Value)
Ранжируйте предикторы в числовой матрице и создайте гистограмму показателей важности предикторов.
Загрузите образцы данных.
load ionosphereionosphere содержит переменные предиктора (X) и переменная ответа (Y).
Ранжировать предикторы с помощью тестов хи-квадрат.
[idx,scores] = fscchi2(X,Y);
Значения в 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')

Выберите пять наиболее важных предикторов. Найдите столбцы этих предикторов в X.
idx(1:5)
ans = 1×5
5 7 3 8 6
Пятая колонна X является наиболее важным предиктором Y.
Ранжирование предикторов в таблице и создание штрих-графика показателей важности предикторов.
Если данные находятся в таблице и fscchi2 ранжирует подмножество переменных в таблице, затем функция индексирует переменные, используя только подмножество. Поэтому рекомендуется переместить предикторы, которые не нужно ранжировать, в конец таблицы. Переместите также переменную отклика и весовой вектор наблюдения. Затем индексы выходных аргументов согласуются с индексами таблицы.
Загрузите набор данных census1994.
load census1994Стол adultdata в census1994 содержит демографические данные Бюро переписи населения США для прогнозирования того, зарабатывает ли человек более 50 000 долларов в год. Отображение первых трех строк таблицы.
head(adultdata,3)
ans=3×15 table
age workClass fnlwgt education education_num marital_status occupation relationship race sex capital_gain capital_loss hours_per_week native_country salary
___ ________________ __________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ ______
39 State-gov 77516 Bachelors 13 Never-married Adm-clerical Not-in-family White Male 2174 0 40 United-States <=50K
50 Self-emp-not-inc 83311 Bachelors 13 Married-civ-spouse Exec-managerial Husband White Male 0 0 13 United-States <=50K
38 Private 2.1565e+05 HS-grad 9 Divorced Handlers-cleaners Not-in-family White Male 0 0 40 United-States <=50K
В таблице adultdata, третий столбец fnlwgt - вес образцов и последний столбец salary является переменной ответа. Двинуться fnlwgt слева от salary с помощью movevars функция.
adultdata = movevars(adultdata,'fnlwgt','before','salary'); head(adultdata,3)
ans=3×15 table
age workClass education education_num marital_status occupation relationship race sex capital_gain capital_loss hours_per_week native_country fnlwgt salary
___ ________________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ __________ ______
39 State-gov Bachelors 13 Never-married Adm-clerical Not-in-family White Male 2174 0 40 United-States 77516 <=50K
50 Self-emp-not-inc Bachelors 13 Married-civ-spouse Exec-managerial Husband White Male 0 0 13 United-States 83311 <=50K
38 Private HS-grad 9 Divorced Handlers-cleaners Not-in-family White Male 0 0 40 United-States 2.1565e+05 <=50K
Ранг предикторов в adultdata. Укажите столбец salary в качестве переменной ответа и укажите столбец fnlwgt в качестве наблюдательных весов.
[idx,scores] = fscchi2(adultdata,'salary','Weights','fnlwgt');
Значения в scores являются отрицательными журналами p-значений. Если значение p меньше, чем eps(0), то соответствующее значение оценки равно Inf. Перед созданием штрих-графика определите, scores включает Inf значения.
idxInf = find(isinf(scores))
idxInf = 1×8
1 3 4 5 6 7 10 12
scores включает восемь Inf значения.
Создайте штрих-график с показателями важности предиктора. Используйте имена предикторов для меток засечек по оси X.
figure bar(scores(idx)) xlabel('Predictor rank') ylabel('Predictor importance score') xticklabels(strrep(adultdata.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 должно иметь одинаковое количество строк.
Если fscchi2 использует подмножество переменных в Tbl в качестве предикторов функция индексирует предикторы, используя только подмножество. Значения в 'CategoricalPredictors' аргумент пары имя-значение и выходной аргумент idx не подсчитывайте предикторы, которые функция не ранжирует.
fscchi2 рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Tbl для переменной ответа отсутствуют значения. fscchi2 не использует наблюдения с отсутствующими значениями для переменной ответа.
Типы данных: table
ResponseVarName - Имя переменной ответаTblИмя ответной переменной, указанное как вектор символов или строковый скаляр, содержащий имя переменной в Tbl.
Например, если переменная ответа является столбцом Y из Tbl (Tbl.Y), затем укажите ResponseVarName как 'Y'.
Типы данных: char | string
formula - Пояснительная модель переменной ответа и подмножество переменных предиктораПояснительная модель переменной ответа и подмножество переменных предиктора, указанное как вектор символов или строковый скаляр в форме 'Y ~ x1 + x2 + x3'. В этой форме Y представляет переменную ответа, и x1, x2, и x3 представляют переменные предиктора.
Задание подмножества переменных в Tbl в качестве предикторов используйте формулу. Если задать формулу, то fscchi2 не ранжирует переменные в Tbl которые не отображаются в formula.
Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB ®. Имена переменных можно проверить вTbl с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.
Типы данных: char | string
Y - Переменная ответаПеременная ответа, заданная как числовой, категориальный или логический вектор, символьный или строковый массив или массив ячеек символьных векторов. Каждая строка Y представляет метки соответствующей строки X.
fscchi2 рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Y для отсутствующих значений. fscchi2 не использует наблюдения с отсутствующими значениями для 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), fscchi2 предполагает, что переменная категорична, если она является логическим вектором, неупорядоченным категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Если данные предиктора являются матрицей (X), fscchi2 предполагает, что все предикторы непрерывны. Чтобы определить любые другие предикторы как категориальные предикторы, укажите их с помощью 'CategoricalPredictors' аргумент «имя-значение».
Пример: 'CategoricalPredictors','all'
Типы данных: single | double | logical | char | string | cell
'ClassNames' - названия классов, используемых для ранжирования;Имена классов, используемых для ранжирования, указанные как разделенная запятыми пара, состоящая из 'ClassNames' и категориальный, символьный или строковый массив, логический или числовой вектор или клеточный массив символьных векторов. ClassNames должен иметь тот же тип данных, что и Y или переменная ответа в Tbl.
Если ClassNames является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Использовать 'ClassNames' кому:
Укажите порядок Prior измерения, соответствующие порядку классов.
Выберите подмножество классов для ранжирования. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Ранжирование предикторов с помощью наблюдений из классов 'a' и 'c' только, укажите 'ClassNames',{'a','c'}.
Значение по умолчанию для 'ClassNames' является набором всех различающихся имен классов в Y или переменная ответа в Tbl. Дефолт 'ClassNames' имеет математический порядок, если переменная ответа имеет порядковый номер. В противном случае значение по умолчанию имеет алфавитный порядок.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical | char | string | logical | single | double | cell
'NumBins' - Количество бункеров для непрерывных предикторов биннингаКоличество ячеек для непрерывных предикторов, указанных как пара, разделенная запятыми, состоящая из 'NumBins' и положительный целочисленный скаляр.
Пример: 'NumBins',50
Типы данных: single | double
'Prior' - Предварительные вероятности'empirical' (по умолчанию) | 'uniform' | вектор скалярных значений | структураПредварительные вероятности для каждого класса, определенные как одна из следующих:
Вектор символа или строковый скаляр.
Вектор (одно скалярное значение для каждого класса). Определение порядка классов для соответствующих элементов 'Prior', установите 'ClassNames' аргумент «имя-значение».
Структура S с двумя полями.
S.ClassNames содержит имена классов в качестве переменной того же типа, что и переменная ответа в Y или Tbl.
S.ClassProbs содержит вектор соответствующих вероятностей.
fscchi2 нормализует веса в каждом классе ('Weights') для суммирования значения предшествующей вероятности соответствующего класса.
Пример: 'Prior','uniform'
Типы данных: char | string | single | double | struct
'UseMissing' - Индикатор использования или отбрасывания отсутствующих значений в предикторахfalse (по умолчанию) | trueИндикатор того, следует ли использовать или отбрасывать отсутствующие значения в предикторах, указанный как пара, разделенная запятыми, состоящая из 'UseMissing' и либо true для использования или false для отбрасывания отсутствующих значений в предикторах для ранжирования.
fscchi2 рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения должны быть отсутствующими значениями.
При указании 'UseMissing',true, то fscchi2 использует отсутствующие значения для ранжирования. Для категориальной переменной: fscchi2 обрабатывает отсутствующие значения как дополнительную категорию. Для непрерывной переменной: fscchi2 места NaN значения в отдельном бункере для биннинга.
При указании 'UseMissing',false, то fscchi2 не использует отсутствующие значения для ранжирования. Поскольку fscchi2 вычисляет оценки важности индивидуально для каждого предиктора, функция не отбрасывает всю строку, когда значения в строке частично отсутствуют. Для каждой переменной, fscchi2 использует все значения, которые не отсутствуют.
Пример: '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'.
fscchi2 нормализует веса в каждом классе для суммирования со значением предшествующей вероятности соответствующего класса.
Типы данных: single | double | char | string
idx - Индексы предикторов, упорядоченные по важности предикторовИндексы предикторов в X или Tbl упорядоченный по важности предиктора, возвращаемый как числовой вектор 1 на r, где r - число ранжированных предикторов.
Если fscchi2 использует подмножество переменных в Tbl в качестве предикторов функция индексирует предикторы, используя только подмножество. Например, предположим Tbl включает 10 столбцов и указывает последние пять столбцов Tbl в качестве переменных предиктора с помощью formula. Если idx(3) является 5, тогда третьим по значимости предиктором является 10-й столбец в Tbl, который является пятым предиктором в подмножестве.
scores - Показатели предиктораОценки предиктора, возвращенные как числовой вектор 1 на r, где r - количество ранжированных предикторов.
Большое значение оценки указывает, что соответствующий предиктор важен.
Если вы используете X чтобы указать предикторы или использовать все переменные в Tbl в качестве предикторов, затем значения в scores имеют тот же порядок, что и предикторы в X или Tbl.
При указании подмножества переменных в Tbl в качестве предикторов, затем значения в scores имеют тот же порядок, что и подмножество.
Например, предположим Tbl включает 10 столбцов и указывает последние пять столбцов Tbl в качестве переменных предиктора с помощью formula. Затем, score(3) содержит значение балла 8-го столбца в Tbl, который является третьим предиктором в подмножестве.
fscchi2 проверяет, является ли каждая предикторная переменная независимой от переменной ответа, используя отдельные тесты хи-квадрат. Небольшое значение p проверочной статистики указывает, что соответствующая переменная предиктора зависит от переменной ответа и, следовательно, является важной особенностью.
Продукция scores является -log (p). Следовательно, большое значение оценки указывает, что соответствующий предиктор важен. Если значение p меньше, чемeps(0), то выходной сигнал равен Inf.
fscchi2 рассматривает непрерывную переменную после объединения или дискретизации переменной. Можно указать количество ячеек с помощью 'NumBins' аргумент пары имя-значение.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.