Предскажите ответы для новых наблюдений из модели пошагового обучения
[
также возвращает классификационные оценки для обоих классов когда 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: [60x1 double] Bias: -0.2005 Lambda: 4.1537e-05 Learner: 'svm' Properties, Methods
TTMdl
ClassificationLinear
объект модели, представляющий традиционно обученную линейную модель классификации.
Преобразуйте традиционно обученную, линейную модель классификации в бинарную классификацию линейная модель для пошагового обучения.
IncrementalMdl = incrementalLearner(TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1 Metrics: [1x2 table] ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double] Bias: -0.2005 Learner: 'svm' Properties, Methods
IncrementalMdl
incrementalClassificationLinear
объект модели, подготовленный к пошаговому обучению с помощью SVM. incrementalLearner
:
Инициализирует инкрементного ученика путем передачи изученных коэффициентов и другой информации TTMdl
усвоенный из обучающих данных
Является теплым (IsWarm
1
), подразумевать, что функции пошагового обучения могут начать отслеживать показатели производительности
Обучает использование адаптивного инвариантного к масштабу решателя, тогда как fitclinear
обученный TTMdl
использование решателя BFGS
Инкрементный ученик, созданный из преобразования традиционно обученной модели, может сгенерировать предсказания без последующей обработки.
Предскажите классификационные оценки для всех наблюдений с помощью обеих моделей.
[~,ttscores] = predict(TTMdl,feat); [~,ilscores] = predict(IncrementalMdl,feat); compareScores = norm(ttscores(:,1) - ilscores(:,1))
compareScores = 0
Различие между баллами, сгенерированными моделями, 0.
Если вы ориентируете наблюдения вдоль столбцов матрицы данных предиктора, можно испытать повышение КПД во время пошагового обучения.
Загрузите и переставьте 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}]';
Сконфигурируйте модель линейной регрессии для пошагового обучения так, чтобы оно не имело периода оценки. Главный модель для предсказания, подбирая сконфигурированную модель к первым 100 наблюдениям. Укажите, что наблюдения ориентированы вдоль столбцов данных.
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
объект модели, созданный непосредственно или путем преобразования поддерживаемого традиционно обученного использования модели машинного обучения incrementalLearner
. Для получения дополнительной информации смотрите, что страница с описанием соответствует проблеме изучения.
Вы должны главный 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
переменные предикторы. Значение 'ObservationsIn'
аргумент пары "имя-значение" определяет ориентацию переменных и наблюдения.
Продолжительность наблюдения маркирует Y
и количество наблюдений в X
должно быть равным; Y (
метка наблюдения (строка или столбец) j в j
)X
.
Примечание
predict
поддержки только входные данные о предикторе с плавающей точкой. Если входная модель Mdl
представляет конвертированную, традиционно обученную модель, и это было подходящим к категориальным данным, использовать dummyvar
преобразовывать каждую категориальную переменную в числовую матрицу фиктивных переменных и конкатенировать все фиктивно-переменные матрицы и любые другие числовые предикторы. Для получения дополнительной информации смотрите Фиктивные Переменные.
Типы данных: single
| double
label
— Предсказанные ответыПредсказанные ответы или метки, возвращенные как n-D категориальный или символьный массив; с плавающей точкой, логический, или вектор строки; или массив ячеек из символьных векторов. 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'
выиграйте преобразование к необработанным классификационным оценкам.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.