Преобразуйте новые данные, используя сгенерированные функции
возвращает таблицу с преобразованными функциями, сгенерированными 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.