Предскажите ответы с помощью модели регрессии машины опорных векторов
Mdl
— Модель регрессии SVMRegressionSVM
возразите | CompactRegressionSVM
объектМодель регрессии SVM, заданная как RegressionSVM
модель или CompactRegressionSVM
модель, возвращенная fitrsvm
или compact
, соответственно.
X
— Данные о предикторе раньше генерировали ответыДанные о предикторе раньше генерировали ответы, заданные как числовая матрица или таблица.
Каждая строка X
соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Для числовой матрицы:
Переменные, составляющие столбцы X
должен иметь тот же порядок как переменные предикторы, которые обучили Mdl
.
Если вы обучили Mdl
с помощью таблицы (например, Tbl
), затем X
может быть числовая матрица если Tbl
содержит все числовые переменные предикторы. Обрабатывать числовые предикторы в Tbl
как категориальные во время обучения, идентифицируйте категориальные предикторы с помощью CategoricalPredictors
аргумент пары "имя-значение" fitrsvm
. Если Tbl
содержит неоднородные переменные предикторы (например, типы числовых и категориальных данных) и X
числовая матрица, затем predict
выдает ошибку.
Для таблицы:
predict
не поддерживает многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов.
Если вы обучили Mdl
с помощью таблицы (например, Tbl
), затем все переменные предикторы в X
должен иметь те же имена переменных и типы данных как те, которые обучили Mdl
(сохраненный в Mdl.PredictorNames
). Однако порядок следования столбцов X
не должен соответствовать порядку следования столбцов Tbl
tbl
и X
может содержать дополнительные переменные (переменные отклика, веса наблюдения, и т.д.), но predict
игнорирует их.
Если вы обучили Mdl
с помощью числовой матрицы затем предиктор называет в Mdl.PredictorNames
и соответствующий переменный предиктор называет в X
должно быть то же самое. Чтобы задать имена предиктора во время обучения, смотрите PredictorNames
аргумент пары "имя-значение" fitrsvm
. Все переменные предикторы в X
должны быть числовые векторы. X
может содержать дополнительные переменные (переменные отклика, веса наблюдения, и т.д.), но predict
игнорирует их.
Если вы устанавливаете 'Standardize',true
в fitrsvm
обучать Mdl
, затем программное обеспечение стандартизирует столбцы X
использование соответствующих средних значений в Mdl.Mu
и стандартные отклонения в Mdl.Sigma
.
Типы данных: table
| double
| single
yfit
— Предсказанные ответыПредсказанные ответы, возвращенные как вектор длины n, где n является количеством наблюдений в обучающих данных.
Для получения дополнительной информации о том, как предсказать ответы, смотрите уравнение 1 и уравнение 2 в Понимании Регрессии Машины опорных векторов.
Загрузите carsmall
набор данных. Рассмотрите модель, которая предсказывает топливную экономичность автомобиля, учитывая ее лошадиную силу и вес. Определите объем выборки.
load carsmall
tbl = table(Horsepower,Weight,MPG);
N = size(tbl,1);
Разделите данные в наборы обучающих данных и наборы тестов. Протяните 10% данных для тестирования.
rng(10); % For reproducibility cvp = cvpartition(N,'Holdout',0.1); idxTrn = training(cvp); % Training set indices idxTest = test(cvp); % Test set indices
Обучите линейную модель регрессии SVM. Стандартизируйте данные.
Mdl = fitrsvm(tbl(idxTrn,:),'MPG','Standardize',true);
Mdl
RegressionSVM
модель.
Предскажите ответы для набора тестов.
YFit = predict(Mdl,tbl(idxTest,:));
Составьте таблицу, содержащую наблюдаемые значения ответа и предсказанные значения ответа рядом друг с другом.
table(tbl.MPG(idxTest),YFit,'VariableNames',... {'ObservedValue','PredictedValue'})
ans=10×2 table
ObservedValue PredictedValue
_____________ ______________
14 9.4833
27 28.938
10 7.765
28 27.155
22 21.054
29 31.484
24.5 30.306
18.5 19.12
32 28.225
28 26.632
Если mdl
перекрестный подтвержденный RegressionPartitionedSVM
модель, используйте kfoldPredict
вместо predict
предсказать новые значения ответа.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Указания и ограничения по применению:
Можно сгенерировать код C/C++ для обоих predict
и update
при помощи кодера configurer. Или, сгенерируйте код только для predict
при помощи saveLearnerForCoder
, loadLearnerForCoder
, и codegen
.
Генерация кода для predict
и update
— Создайте кодер configurer при помощи learnerCoderConfigurer
и затем сгенерируйте код при помощи generateCode
. Затем можно обновить параметры модели в сгенерированном коде, не имея необходимость регенерировать код.
Генерация кода для predict
— Сохраните обученную модель при помощи saveLearnerForCoder
. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadLearnerForCoder
и вызывает predict
функция. Затем используйте codegen
сгенерировать код для функции точки входа.
Можно сгенерировать фиксированную точку код C/C++ для predict
. По сравнению с общим рабочим процессом генерации кода C/C++ генерация фиксированной точки требует дополнительного шага, который задает типы данных с фиксированной точкой переменных, требуемых для прогноза. Создайте структуру типа данных с фиксированной точкой при помощи функции типа данных, сгенерированной generateLearnerDataTypeFcn
, и используйте структуру в качестве входного параметра loadLearnerForCoder
в функции точки входа. При генерации фиксированной точки код C/C++ требует MATLAB® Coder™ и Fixed-Point Designer™.
Эта таблица содержит примечания об аргументах predict
. Аргументы, не включенные в эту таблицу, полностью поддержаны.
Аргумент | Примечания и ограничения |
---|---|
Mdl | Для указаний и ограничений по применению объекта модели смотрите
Генерацию кода |
X |
|
Для получения дополнительной информации смотрите Введение в Генерацию кода.
CompactRegressionSVM
| RegressionSVM
| fitrsvm
| kfoldPredict
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.