Преобразуйте новые данные, использующие генерированные признаки
возвращает таблицу с преобразованными признакамиNewTbl
= transform(Transformer
,Tbl
), генерированными FeatureTransformer
объект Transformer
. Вход Tbl
должен содержать необходимые переменные, типы данных которых должны соответствовать, те из переменных первоначально передали gencfeatures
когда Transformer
был создан.
возвращает подмножество преобразованных функций, где NewTbl
= transform(Transformer
,Tbl
,Index
)Index
указывает на функции, чтобы возвратиться.
Генерируйте признаки, чтобы обучить линейный классификатор. Вычислите ошибку классификации перекрестных проверок модели при помощи crossval
функция.
Загрузите ionosphere
набор данных, и составляет таблицу, содержащую данные о предикторе.
load ionosphere
Tbl = array2table(X);
Создайте случайный раздел для стратифицированной 5-кратной перекрестной проверки.
rng("default") % For reproducibility of the partition cvp = cvpartition(Y,"KFold",5);
Вычислите потерю классификации перекрестных проверок для линейной модели, обученной на исходных функциях в Tbl
.
CVMdl = fitclinear(Tbl,Y,"CVPartition",cvp);
cvloss = kfoldLoss(CVMdl)
cvloss = 0.1339
Создайте пользовательский функциональный myloss
(показанный в конце этого примера). Эта функция генерирует 20 признаков от обучающих данных, и затем применяет те же преобразования набора обучающих данных к тестовым данным. Функция затем соответствует линейному классификатору к обучающим данным и вычисляет потерю набора тестов.
Примечание: Если вы используете файл live скрипта для этого примера, myloss
функция уже включена в конце файла. В противном случае необходимо создать эту функцию в конце.m файла или добавить его как файл на пути MATLAB®.
Вычислите потерю классификации перекрестных проверок для линейной модели, обученной на признаках, генерированных от предикторов в Tbl
.
newcvloss = mean(crossval(@myloss,Tbl,Y,"Partition",cvp))
newcvloss = 0.0770
function testloss = myloss(TrainTbl,trainY,TestTbl,testY) [Transformer,NewTrainTbl] = gencfeatures(TrainTbl,trainY,20); NewTestTbl = transform(Transformer,TestTbl); Mdl = fitclinear(NewTrainTbl,trainY); testloss = loss(Mdl,NewTestTbl,testY, ... "LossFun","classiferror"); end
Обучите линейный классификатор, использующий только числовые генерированные признаки, возвращенные gencfeatures
.
Загрузите patients
набор данных. Составьте таблицу от подмножества переменных.
load patients Tbl = table(Age,Diastolic,Height,SelfAssessedHealthStatus, ... Smoker,Systolic,Weight,Gender);
Разделите данные в наборы обучающих данных и наборы тестов. Используйте приблизительно 70% наблюдений как обучающие данные и 30% наблюдений как тестовые данные. Разделите данные с помощью cvpartition
.
rng("default") c = cvpartition(Tbl.Gender,"Holdout",0.30); TrainTbl = Tbl(training(c),:); TestTbl = Tbl(test(c),:);
Используйте обучающие данные, чтобы генерировать 25 новых признаков. Задайте метод выбора признаков минимальной уместности максимума сокращения (MRMR) для выбора новых возможностей.
Transformer = gencfeatures(TrainTbl,"Gender",25, ... "FeatureSelectionMethod","mrmr")
Transformer = FeatureTransformer with properties: Type: 'classification' TargetLearner: 'linear' NumEngineeredFeatures: 24 NumOriginalFeatures: 1 TotalNumFeatures: 25
Смотрите генерированные признаки.
Info = describe(Transformer)
Info=25×4 table
Type IsOriginal InputVariables Transformations
___________ __________ ________________________ __________________________________________________________________________________________
c(SelfAssessedHealthStatus) Categorical true SelfAssessedHealthStatus "Variable of type categorical converted from a cell data type"
eb5(Weight) Categorical false Weight "Equal-width binning (number of bins = 5)"
zsc(sqrt(Systolic)) Numeric false Systolic "sqrt( ) -> Standardization with z-score (mean = 11.086, std = 0.29694)"
zsc(sin(Systolic)) Numeric false Systolic "sin( ) -> Standardization with z-score (mean = -0.1303, std = 0.72575)"
zsc(Systolic./Weight) Numeric false Systolic, Weight "Systolic ./ Weight -> Standardization with z-score (mean = 0.82662, std = 0.14555)"
zsc(Age+Weight) Numeric false Age, Weight "Age + Weight -> Standardization with z-score (mean = 191.1143, std = 28.6976)"
zsc(Age./Weight) Numeric false Age, Weight "Age ./ Weight -> Standardization with z-score (mean = 0.25424, std = 0.062486)"
zsc(Diastolic.*Weight) Numeric false Diastolic, Weight "Diastolic .* Weight -> Standardization with z-score (mean = 12864.6857, std = 2731.1613)"
q6(Height) Categorical false Height "Equiprobable binning (number of bins = 6)"
zsc(Systolic+Weight) Numeric false Systolic, Weight "Systolic + Weight -> Standardization with z-score (mean = 276.1429, std = 28.7111)"
zsc(Diastolic-Weight) Numeric false Diastolic, Weight "Diastolic - Weight -> Standardization with z-score (mean = -69.4286, std = 26.2411)"
zsc(Age-Weight) Numeric false Age, Weight "Age - Weight -> Standardization with z-score (mean = -115.2, std = 27.0113)"
zsc(Height./Weight) Numeric false Height, Weight "Height ./ Weight -> Standardization with z-score (mean = 0.44797, std = 0.067992)"
zsc(Height.*Weight) Numeric false Height, Weight "Height .* Weight -> Standardization with z-score (mean = 10291.0714, std = 2111.9071)"
zsc(Diastolic+Weight) Numeric false Diastolic, Weight "Diastolic + Weight -> Standardization with z-score (mean = 236.8857, std = 29.2439)"
zsc(Age.*Weight) Numeric false Age, Weight "Age .* Weight -> Standardization with z-score (mean = 5836.5571, std = 1621.0685)"
⋮
Преобразуйте наборы обучающих данных и наборы тестов, но сохраните только числовые предикторы.
numericIdx = (Info.Type == "Numeric");
NewTrainTbl = transform(Transformer,TrainTbl,numericIdx);
NewTestTbl = transform(Transformer,TestTbl,numericIdx);
Обучите линейную модель с помощью преобразованных обучающих данных. Визуализируйте точность предсказаний набора тестов модели при помощи матрицы беспорядка.
Mdl = fitclinear(NewTrainTbl,TrainTbl.Gender); testLabels = predict(Mdl,NewTestTbl); confusionchart(TestTbl.Gender,testLabels)
Transformer
— Покажите трансформаторFeatureTransformer
объектПокажите трансформатор в виде FeatureTransformer
объект.
Tbl
— Функции, чтобы преобразоватьФункции, чтобы преобразовать в виде таблицы. Строки должны соответствовать наблюдениям, и столбцы должны соответствовать предикторам, используемым, чтобы генерировать преобразованные признаки, сохраненные в Transformer
. Можно ввести describe(Transformer).InputVariables
видеть список функций что Tbl
должен содержать.
Типы данных: table
Index
— Функции, чтобы возвратитьсяФункции, чтобы возвратиться в виде числового или логического вектора, указывающего на положение функций, или массив строк или массив ячеек из символьных векторов, указывающий на имена функций.
Пример: 1:12
Типы данных: single
| double
| logical
| string
| cell
NewTbl
— Преобразованные функцииПреобразованные функции, возвращенные как таблица. Каждая строка соответствует наблюдению, и каждый столбец соответствует генерированному признаку.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.