Предскажите ответы для новых наблюдений из линейной модели для пошагового обучения
[ также возвращает классификационные оценки для всех классов когда 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. счет ( счет к классификации наблюдения jK) в класс j. kMdl.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.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.