Предскажите ответы для новых наблюдений из линейной модели для пошагового обучения
[
также возвращает классификационные оценки для всех классов когда label
,score
] = predict(___)Mdl
модель пошагового обучения для классификации, с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах.
Загрузите набор данных деятельности человека.
load humanactivity
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Ответы могут быть одним из пяти классов: Нахождение, Положение, Обход, Выполнение или Танец. Разделите пополам ответ путем идентификации, перемещается ли предмет (actid
> 2).
Y = actid > 2;
Подбирайте линейную модель классификации к целому набору данных.
TTMdl = fitclinear(feat,Y)
TTMdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'none' Beta: [60×1 double] Bias: -0.2005 Lambda: 4.1537e-05 Learner: 'svm' Properties, Methods
TTMdl
ClassificationLinear
объект модели, представляющий традиционно обученную линейную модель классификации.
Преобразуйте традиционно обученную линейную модель классификации в бинарную классификацию линейная модель для пошагового обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1 Metrics: [1×2 table] ClassNames: [0 1] ScoreTransform: 'none' Beta: [60×1 double] Bias: -0.2005 Learner: 'svm' Properties, Methods
IncrementalMdl
incrementalClassificationLinear
объект модели, подготовленный к пошаговому обучению с помощью SVM.
incrementalLearner
функция инициализирует инкрементного ученика путем передачи изученных коэффициентов ему, наряду с другой информацией TTMdl
усвоенный из обучающих данных.
IncrementalMdl
является теплым (IsWarm
1
), что означает, что функции пошагового обучения могут начать отслеживать показатели производительности.
incrementalLearner
конфигурирует модель, которая будет обучена с помощью адаптивного инвариантного к масштабу решателя, тогда как fitclinear
обученный TTMdl
использование решателя BFGS
Инкрементный ученик, созданный из преобразования традиционно обученной модели, может сгенерировать предсказания без последующей обработки.
Предскажите метки класса для всех наблюдений с помощью обеих моделей.
ttlabels = predict(TTMdl,feat); illables = predict(IncrementalMdl,feat); sameLabels = sum(ttlabels ~= illables) == 0
sameLabels = logical
1
Обе модели предсказывают те же метки для каждого наблюдения.
Если вы ориентируете наблюдения вдоль столбцов матрицы данных предиктора, можно испытать повышение КПД во время пошагового обучения.
Загрузите и переставьте 2 015 наборов данных корпуса Нью-Йорк Сити. Для получения дополнительной информации о данных смотрите, что Нью-Йорк Сити Открывает Данные.
load NYCHousing2015 rng(1) % For reproducibility n = size(NYCHousing2015,1); shuffidx = randsample(n,n); NYCHousing2015 = NYCHousing2015(shuffidx,:);
Извлеките переменную отклика SALEPRICE
из таблицы. Применяйте логарифмическое преобразование к SALEPRICE
.
Y = log(NYCHousing2015.SALEPRICE + 1); % Add 1 to avoid log of 0
NYCHousing2015.SALEPRICE = [];
Создайте фиктивные переменные матрицы из категориальных предикторов.
catvars = ["BOROUGH" "BUILDINGCLASSCATEGORY" "NEIGHBORHOOD"]; dumvarstbl = varfun(@(x)dummyvar(categorical(x)),NYCHousing2015,... 'InputVariables',catvars); dumvarmat = table2array(dumvarstbl); NYCHousing2015(:,catvars) = [];
Обработайте все другие числовые переменные в таблице как линейные предикторы продажной цены. Конкатенируйте матрицу фиктивных переменных к остальной части данных о предикторе и транспонируйте данные, чтобы ускорить расчеты.
idxnum = varfun(@isnumeric,NYCHousing2015,'OutputFormat','uniform'); X = [dumvarmat NYCHousing2015{:,idxnum}]';
Сконфигурируйте модель линейной регрессии для пошагового обучения без периода оценки.
Mdl = incrementalRegressionLinear('Learner','leastsquares','EstimationPeriod',0);
Mdl
incrementalRegressionLinear
объект модели.
Выполните пошаговое обучение и предсказание путем выполнения этой процедуры для каждой итерации:
Симулируйте поток данных путем обработки фрагмента 100 наблюдений за один раз.
Подбирайте модель к входящему фрагменту данных. Укажите, что наблюдения ориентированы вдоль столбцов данных. Перезапишите предыдущую инкрементную модель с новой моделью.
Предскажите ответы с помощью подобранной модели и входящего фрагмента данных. Укажите, что наблюдения ориентированы вдоль столбцов данных.
% Preallocation numObsPerChunk = 100; n = numel(Y); nchunk = floor(n/numObsPerChunk); r = nan(n,1); figure h = plot(r); h.YDataSource = 'r'; ylabel('Residuals') xlabel('Iteration') % Incremental fitting for j = 2:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; Mdl = fit(Mdl,X(:,idx),Y(idx),'ObservationsIn','columns'); yhat = predict(Mdl,X(:,idx),'ObservationsIn','columns'); r(idx) = Y(idx) - yhat; refreshdata drawnow end
Mdl
incrementalRegressionLinear
объект модели, обученный на всех данных в потоке.
Остаточные значения появляются симметрично распространение приблизительно 0 в течение пошагового обучения.
Чтобы вычислить следующие вероятности класса, задайте логистическую регрессию инкрементный ученик.
Загрузите набор данных деятельности человека. Случайным образом переставьте данные.
load humanactivity n = numel(actid); rng(10); % For reproducibility idx = randsample(n,n); X = feat(idx,:); Y = actid(idx);
Для получения дополнительной информации на наборе данных, введите Description
в командной строке.
Ответы могут быть одним из пяти классов: Нахождение, Положение, Обход, Выполнение или Танец. Разделите пополам ответ путем идентификации, перемещается ли предмет (actid
> 2).
Y = Y > 2;
Создайте инкрементную модель логистической регрессии для бинарной классификации. Подготовьте его к predict
путем определения имен классов и произвольного коэффициента и значений смещения.
p = size(X,2); Beta = randn(p,1); Bias = randn(1); Mdl = incrementalClassificationLinear('Learner','logistic','Beta',Beta,... 'Bias',Bias,'ClassNames',unique(Y));
Mdl
incrementalClassificationLinear
модель. Все его свойства только для чтения. Вместо того, чтобы задать произвольные значения, можно принять любые из этих мер, чтобы подготовить модель:
Обучите модель логистической регрессии бинарной классификации с помощью fitclinear
на подмножестве данных (при наличии), и затем преобразуют модель в инкрементного ученика при помощи incrementalLearner
.
Инкрементно подходящий Mdl
к данным при помощи fit
.
Симулируйте поток данных и выполните следующие действия с каждым входящим фрагментом 50 наблюдений.
Вызовите predict
предсказать классификационные оценки для наблюдений во входящем фрагменте данных. Классификационные оценки являются следующими вероятностями класса для учеников логистической регрессии.
Вызовите perfcurve
вычислить область под кривой ROC (AUC) с помощью входящего фрагмента данных и сохранить результат.
Вызовите fit
подбирать модель к входящему фрагменту. Перезапишите предыдущую инкрементную модель с новой, адаптированной к входящему наблюдению.
numObsPerChunk = 50; nchunk = floor(n/numObsPerChunk); auc = zeros(nchunk,1); % Incremental learning for j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1); iend = min(n,numObsPerChunk*j); idx = ibegin:iend; [~,posteriorProb] = predict(Mdl,X(idx,:)); [~,~,~,auc(j)] = perfcurve(Y(idx),posteriorProb(:,2),Mdl.ClassNames(2)); Mdl = fit(Mdl,X(idx,:),Y(idx)); end
Mdl
incrementalClassificationLinear
объект модели, обученный на всех данных в потоке.
Постройте AUC на входящих фрагментах данных.
plot(auc) ylabel('AUC') xlabel('Iteration')
AUC предполагает, что классификатор правильно предсказывает движущиеся предметы хорошо.
Mdl
— Модель пошагового обученияincrementalClassificationLinear
объект модели | incrementalRegressionLinear
объект моделиМодель пошагового обучения в виде incrementalClassificationLinear
или incrementalRegressionLinear
объект модели. Можно создать Mdl
непосредственно или путем преобразования поддерживаемой, традиционно обученной модели машинного обучения использование incrementalLearner
функция. Для получения дополнительной информации смотрите соответствующую страницу с описанием.
Необходимо сконфигурировать Mdl
предсказать метки для пакета наблюдений.
Если Mdl
конвертированная, традиционно обученная модель, можно предсказать метки без любых модификаций.
В противном случае, Mdl
должен удовлетворить следующим критериям, которые можно задать непосредственно или путем подбора кривой Mdl
к использованию данных fit
или updateMetricsAndFit
.
Если Mdl
incrementalRegressionLinear
модель, ее коэффициенты модели Mdl.Beta
и сместите Mdl.Bias
должны быть непустые массивы.
Если Mdl
incrementalClassificationLinear
модель, ее коэффициенты модели Mdl.Beta
и сместите Mdl.Bias
должны быть непустые массивы и имена классов в Mdl.ClassNames
должен содержать два класса.
Независимо от типа объекта, если вы конфигурируете модель так, чтобы функции стандартизировали данные о предикторе, предиктор означает Mdl.Mu
и стандартные отклонения Mdl.Sigma
должны быть непустые массивы.
X
— Пакет данных о предиктореПакет данных о предикторе, для которых можно предсказать метки в виде матрицы с плавающей точкой наблюдений n и Mdl.NumPredictors
переменные предикторы. Значение dimension
определяет ориентацию переменных и наблюдения.
Продолжительность наблюдения маркирует Y
и количество наблюдений в X
должно быть равным; Y (
метка наблюдения j (строка или столбец) в j
)X
.
Примечание
predict
поддержки только входные данные о предикторе с плавающей точкой. Если входная модель Mdl
представляет конвертированное, традиционно обучил подгонку модели к категориальным данным, использовать dummyvar
преобразовывать каждую категориальную переменную в числовую матрицу фиктивных переменных и конкатенировать все фиктивные переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации смотрите Фиктивные Переменные.
Типы данных: single
| double
dimension
— Размерность наблюдения данных о предикторе'rows'
(значение по умолчанию) | 'columns'
Размерность наблюдения данных о предикторе в виде 'columns'
или 'rows'
.
Пример: 'ObservationsIn','columns'
Типы данных: char |
string
label
— Предсказанные ответыПредсказанные ответы (или метки), возвращенный как категориальное или символьный массив; с плавающей точкой, логический, или вектор строки; или массив ячеек из символьных векторов со строками n. n является количеством наблюдений в X
, и метка (
предсказанный ответ для наблюдения j
)
.j
Для проблем классификации, label
имеет совпадающий тип данных как имена классов, сохраненные в Mdl.ClassNames
. (Программное обеспечение обрабатывает строковые массивы как массивы ячеек из символьных векторов.)
Для проблем регрессии, label
вектор с плавающей точкой.
score
— Классификационные оценкиКлассификационные оценки, возвращенные как n-by-2 матрица с плавающей точкой, когда Mdl
incrementalClassificationLinear
модель. n является количеством наблюдений в X
. счет (
счет к классификации наблюдения j
K
)
в класс j
. k
Mdl.ClassNames
задает порядок классов.
Если Mdl.Learner
'svm'
, predict
возвращает необработанные классификационные оценки. Если Mdl.Learner
'logistic'
, классификационные оценки являются апостериорными вероятностями.
Для линейных моделей пошагового обучения для бинарной классификации, необработанного classification score для классификации наблюдения x, вектор-строка, в положительный класс
где
β 0 является скалярным смещением Mdl.Bias
.
β является вектор-столбцом коэффициентов Mdl.Beta
.
Необработанная классификационная оценка для классификации x в отрицательный класс является –f (x). Программное обеспечение классифицирует наблюдения в класс, который дает к положительному счету.
Если линейная модель классификации состоит из учеников логистической регрессии, то программное обеспечение применяет 'logit'
выиграйте преобразование к необработанным классификационным оценкам.
Указания и ограничения по применению:
Использование saveLearnerForCoder
, loadLearnerForCoder
, и codegen
(MATLAB Coder), чтобы сгенерировать код для predict
функция. Сохраните обученную модель при помощи saveLearnerForCoder
. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadLearnerForCoder
и вызывает predict
функция. Затем используйте codegen
сгенерировать код для функции точки входа.
Чтобы сгенерировать код C/C++ с одинарной точностью для предсказывают, задают аргумент 'DataType','single'
значения имени когда вы вызываете
loadLearnerForCoder
функция.
Эта таблица содержит примечания об аргументах predict
. Аргументы, не включенные в эту таблицу, полностью поддерживаются.
Аргумент | Примечания и ограничения |
---|---|
| Для указаний и ограничений по применению объекта модели смотрите |
|
|
Следующие ограничения применяются:
Если вы конфигурируете Mdl
переставить данные (Mdl.Shuffle
true
, или Mdl.Solver
'sgd'
или 'asgd'
), predict
функционируйте случайным образом переставляет каждый входящий пакет наблюдений, прежде чем он будет подбирать модель к пакету. Порядок переставленных наблюдений не может совпадать с порядком, сгенерированным MATLAB®. Поэтому, если вы соответствуете Mdl
прежде, чем сгенерировать предсказания, предсказания, вычисленные в MATLAB и вычисленные сгенерированным кодом не могут быть равными.
Используйте тип гомогенных данных для всех входных параметров с плавающей точкой и свойств объектов, а именно, любого single
или double
.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.