fscchi2

Одномерная функция, занимающая место для классификации с помощью тестов хи-квадрата

Описание

пример

idx = fscchi2(Tbl,ResponseVarName) ранги показывают (предикторы) с помощью тестов хи-квадрата. Таблица Tbl содержит переменные предикторы и переменную отклика и ResponseVarName имя переменной отклика в Tbl. Функция возвращает idx, который содержит индексы предикторов, упорядоченных важностью предиктора, означая idx(1) индекс самого важного предиктора. Можно использовать idx выбрать важные предикторы для проблем классификации.

idx = fscchi2(Tbl,formula) задает переменную отклика и переменные предикторы, чтобы рассмотреть среди переменных в Tbl при помощи formula.

idx = fscchi2(Tbl,Y) предикторы рангов в Tbl использование переменной отклика Y.

пример

idx = fscchi2(X,Y) предикторы рангов в X использование переменной отклика Y.

пример

idx = fscchi2(___,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно задать веса наблюдения и априорные вероятности.

пример

[idx,scores] = fscchi2(___) также возвращает баллы предиктора scores. Большое значение баллов указывает, что соответствующий предиктор важен.

Примеры

свернуть все

Оцените предикторы в числовой матрице и создайте столбиковую диаграмму баллов важности предиктора.

Загрузите выборочные данные.

load ionosphere

ionosphere содержит переменные предикторы (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 как предикторы, затем задайте переменную отклика при помощи ResponseVarName. Если Tbl также содержит веса наблюдения, затем можно задать веса при помощи Weights.

  • Если Tbl содержит переменную отклика, и вы хотите использовать только подмножество остающихся переменных в Tbl как предикторы, затем задайте подмножество переменных при помощи formula.

  • Если Tbl не содержит переменную отклика, затем задает переменную отклика при помощи Y. Переменная отклика и Tbl должен иметь одинаковое число строк.

Если fscchi2 использует подмножество переменных в Tbl как предикторы, затем функция индексирует предикторы с помощью только подмножество. Значения в 'CategoricalPredictors' аргумент пары "имя-значение" и выходной аргумент idx не считайте предикторы, которые не оценивает функция.

fscchi2 рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Tbl для переменной отклика, чтобы быть отсутствующими значениями. fscchi2 не использует наблюдения с отсутствующими значениями для переменной отклика.

Типы данных: table

Имя переменной отклика в виде вектора символов или строкового скаляра, содержащего имя переменной в Tbl.

Например, если переменная отклика является столбцом Y из Tbl (Tbl.Y), затем задайте ResponseVarName как 'Y'.

Типы данных: char | string

Объяснительная модель переменной отклика и подмножество переменных предикторов в виде вектора символов или строкового скаляра в форме 'Y ~ X1 + X2 + X3'. В этой форме, Y представляет переменную отклика и X1x2 , и X3 представляйте переменные предикторы.

Задавать подмножество переменных в Tbl как предикторы, используйте формулу. Если вы задаете формулу, то fscchi2 не оценивает переменных в Tbl это не появляется в formula.

Имена переменных в формуле должны быть оба именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB®. Для получения дополнительной информации смотрите Советы.

Типы данных: char | string

Переменная отклика в виде числового, категориального, или логического вектора, символьного массива или массива строк или массива ячеек из символьных векторов. Каждая строка Y представляет метки соответствующей строки X.

fscchi2 рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Y быть отсутствующими значениями. fscchi2 не использует наблюдения с отсутствующими значениями для Y.

Типы данных: single | double | categorical | logical | char | string | cell

Данные о предикторе в виде числовой матрицы. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'NumBins',20,'UseMissing',true определяет номер интервалов как 20 и задает, чтобы использовать отсутствующие значения в предикторах для рейтинга.

Список категориальных предикторов в виде разделенной запятой пары, состоящей из 'CategoricalPredictors' и одно из значений в этой таблице.

ЗначениеОписание
Вектор положительных целых чиселКаждая запись в векторе является значением индекса, соответствующим столбцу данных о предикторе (X или Tbl) это содержит категориальную переменную.
Логический векторtrue запись означает что соответствующий столбец данных о предикторе (X или Tbl) категориальная переменная.
Символьная матрицаКаждая строка матрицы является именем переменного предиктора. Имена должны совпадать с именами в Tbl. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину.
Массив строк или массив ячеек из символьных векторовКаждым элементом в массиве является имя переменного предиктора. Имена должны совпадать с именами в Tbl.
'all'Все предикторы являются категориальными.

По умолчанию, если данные о предикторе находятся в таблице (Tbl), fscchi2 принимает, что переменная является категориальной, если это - логический вектор, неупорядоченный категориальный вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X), fscchi2 принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их при помощи 'CategoricalPredictors' аргумент пары "имя-значение".

Если fscchi2 использует подмножество переменных в Tbl как предикторы, затем функция индексирует предикторы с помощью только подмножество. 'CategoricalPredictors' значения не считают предикторы, которые не оценивает функция.

Пример: 'CategoricalPredictors','all'

Типы данных: single | double | logical | char | string | cell

Имена классов, чтобы использовать в рейтинге в виде разделенной запятой пары, состоящей из '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',50

Типы данных: single | double

Априорные вероятности для каждого класса в виде разделенной запятой пары, состоящей из 'Prior' и одно из следующего:

  • Вектор символов или строковый скаляр.

    • 'empirical' определяет вероятности класса из частот класса в переменной отклика в Y или Tbl. Если вы передаете веса наблюдения, fscchi2 использует веса, чтобы вычислить вероятности класса.

    • 'uniform' наборы все вероятности класса, чтобы быть равным.

  • Вектор (одно скалярное значение для каждого класса). Чтобы задать класс заказывают для соответствующих элементов 'Prior', также задайте ClassNames аргумент пары "имя-значение".

  • Структуры с двумя полями.

    • S.ClassNames содержит имена классов как переменную того же типа как переменная отклика в Y или Tbl.

    • S.ClassProbs содержит вектор соответствующих вероятностей.

Если вы устанавливаете значения для обоих 'Weights' и 'Prior', fscchi2 нормирует веса в каждом классе, чтобы составить в целом значение априорной вероятности соответствующего класса.

Пример: 'Prior','uniform'

Типы данных: char | string | single | double | struct

Индикатор для того, использовать ли или отбросить отсутствующие значения в предикторах в виде разделенной запятой пары, состоящей из 'UseMissing' и любой true использовать или false отбрасывать отсутствующие значения в предикторах для рейтинга.

fscchi2 рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения, чтобы быть отсутствующими значениями.

Если вы задаете 'UseMissing',true, затем fscchi2 отсутствующие значения использования для рейтинга. Для категориальной переменной, fscchi2 отсутствующие значения обработок как дополнительная категория. Для непрерывной переменной, fscchi2 места NaN значения в отдельном интервале для раскладывания.

Если вы задаете 'UseMissing',false, затем fscchi2 не использует отсутствующие значения в рейтинге. Поскольку fscchi2 вычисляет музыку важности индивидуально к каждому предиктору, функция не отбрасывает целую строку, когда значения в строке частично отсутствуют. Для каждой переменной, fscchi2 использование все значения, которые не отсутствуют.

Пример: 'UseMissing',true

Типы данных: логический

Веса наблюдения в виде разделенной запятой пары, состоящей из 'Weights' и вектор скалярных значений или имя переменной в Tbl. Функциональные веса наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должен равняться количеству строк в X или Tbl.

Если вы задаете входные данные как таблицу Tbl, затем Weights может быть имя переменной в Tbl это содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или строковый скаляр. Например, если вектор веса является столбцом W из Tbl (Tbl.W), затем задайте 'Weights,'W'.

fscchi2 нормирует веса в каждом классе, чтобы составить в целом значение априорной вероятности соответствующего класса.

Типы данных: single | double | char | string

Выходные аргументы

свернуть все

Индексы предикторов в X или Tbl упорядоченный важностью предиктора, возвращенной как 1 r числовым вектором, где r является количеством оцениваемых предикторов.

Если fscchi2 использует подмножество переменных в Tbl как предикторы, затем функция индексирует предикторы с помощью только подмножество. Например, предположите Tbl включает 10 столбцов, и вы задаете последние пять столбцов Tbl как переменные предикторы при помощи formula. Если idx(3) 5, затем третий по важности предиктор является 10-м столбцом в Tbl, который является пятым предиктором в подмножестве.

Баллы предиктора, возвращенные как 1 r числовым вектором, где r является количеством оцениваемых предикторов.

Большое значение баллов указывает, что соответствующий предиктор важен.

  • Если вы используете X задавать предикторы или использовать все переменные в Tbl как предикторы, затем значения в scores имейте тот же порядок как предикторы в X или Tbl.

  • Если вы задаете подмножество переменных в Tbl как предикторы, затем значения в scores имейте тот же порядок как подмножество.

Например, предположите Tbl включает 10 столбцов, и вы задаете последние пять столбцов Tbl как переменные предикторы при помощи formula. Затем score(3) содержит значение баллов 8-го столбца в Tbl, который является третьим предиктором в подмножестве.

Советы

  • Если вы задаете переменную отклика и переменные предикторы при помощи входного параметра formula, затем имена переменных в формуле должны быть оба именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB.

    Можно проверить имена переменных в Tbl при помощи isvarname функция. Следующий код возвращает логический 1 TRUE) для каждой переменной, которая имеет допустимое имя переменной.

    cellfun(@isvarname,Tbl.Properties.VariableNames)
    Если имена переменных в Tbl не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName функция.
    Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);

Алгоритмы

свернуть все

Одномерный рейтинг функции Используя тесты хи-квадрата

  • fscchi2 исследует, независим ли каждый переменный предиктор от переменной отклика при помощи отдельных тестов хи-квадрата. Маленький p - значение тестовой статистической величины указывает, что соответствующий переменный предиктор зависит от переменной отклика, и, поэтому является важной функцией.

  • Выход scores - журнал (p). Поэтому большое значение баллов указывает, что соответствующий предиктор важен. Если p - значение меньше, чем eps(0), затем выходом является Inf.

  • fscchi2 исследует непрерывную переменную после раскладывания, или дискретизации, переменной. Можно задать количество интервалов с помощью 'NumBins' аргумент пары "имя-значение".

Введенный в R2020a