Полууправляемая модель самообучения для классификации
Для маркировки немаркированных данных можно использовать метод самоподготовки с полуоплатным контролем с помощью fitsemiself функция. Получающееся SemiSupervisedSelfTrainingModel объект содержит соответствующие метки для немеченых наблюдений (FittedLabels) и их оценки (LabelScores). Вы также можете использовать SemiSupervisedSelfTrainingModel объект в качестве классификатора, обученного как маркированным, так и немаркированным данным, для классификации новых данных с помощью predict функция.
Создать SemiSupervisedSelfTrainingModel объект с помощью fitsemiself.
FittedLabels - Этикетки, устанавливаемые на немеченые данныеЭто свойство доступно только для чтения.
Метки, соответствующие немаркированным данным, указанным как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. FittedLabels имеет тот же тип данных, что и метки класса в переменной ответа в вызове fitsemiself. (Программа рассматривает строковые массивы как массивы ячеек символьных векторов.)
Каждая строка FittedLabels представляет подогнанную метку соответствующего наблюдения UnlabeledX или UnlabeledTbl.
Типы данных: single | double | logical | char | cell | categorical
LabelScores - Оценки для встроенных этикетокЭто свойство доступно только для чтения.
Оценки для соответствующих меток, указанных как числовая матрица. LabelScores имеет размер u-by-K, где u - количество наблюдений в немеченых данных, а K - число классов в ClassNames.
score(u,k) вероятность того, что наблюдение u принадлежит классу k, где более высокое значение оценки указывает на более высокую вероятность. Диапазон значений баллов зависит от базового классификатора Learner.
Типы данных: single | double
Learner - Базовый классификаторЭто свойство доступно только для чтения.
Базовый классификатор, указанный как объект классификационной модели. fitsemiself использует этот классификатор в цикле для маркировки и оценки немаркированных данных. Для отображения значений параметров и гиперпараметров базового классификатора можно использовать точечную нотацию.
Например, при указании 'Learner','svm' в вызове для fitsemiself, то можно ввести Mdl.Learner.KernelParameters для отображения параметров ядра модели конечной машины вектора поддержки (SVM), обученной как на помеченных, так и на немаркированных данных.
Примечание
Потому что Mdl.Learner модель имеет некоторые ограничения (например, отсутствие поддержки табличных данных), избегайте использования ее непосредственно с ее объектными функциями, такими как loss и predict. Для прогнозирования новых данных используйте predict объектная функция SemiSupervisedSelfTrainingModel.
CategoricalPredictors - Индексы категориального предиктора[]Это свойство доступно только для чтения.
Индексы категориального предиктора, заданные как положительный целочисленный вектор. Предполагая, что данные предиктора содержат наблюдения в строках, CategoricalPredictors содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не категоричен, то это свойство пустое ([]).
Типы данных: double
ClassNames - Уникальные метки классаЭто свойство доступно только для чтения.
Уникальные метки классов, используемые для маркировки немаркированных данных, указанных как категориальный или символьный массив, логический или числовой вектор или массив ячеек символьных векторов. Порядок элементов ClassNames определяет порядок классов.
Типы данных: single | double | logical | char | cell | categorical
PredictorNames - Имена переменных предиктораЭто свойство доступно только для чтения.
Имена переменных предиктора, заданные как массив ячеек векторов символов. Порядок элементов PredictorNames соответствует порядку, в котором имена предикторов появляются в данных предиктора.
Типы данных: cell
ResponseName - Имя переменной ответаЭто свойство доступно только для чтения.
Имя ответной переменной, указанное как символьный вектор.
Типы данных: char
predict | Маркировка новых данных с использованием полууправляемого самообученного классификатора |
Подгонка меток к немеченым данным с помощью полуинспектируемого метода самостоятельного обучения.
Случайным образом генерируют 60 наблюдений помеченных данных с 20 наблюдениями в каждом из трех классов.
rng('default') % For reproducibility labeledX = [randn(20,2)*0.25 + ones(20,2); randn(20,2)*0.25 - ones(20,2); randn(20,2)*0.5]; Y = [ones(20,1); ones(20,1)*2; ones(20,1)*3];
Визуализация помеченных данных с помощью графика рассеяния. Наблюдения в одном классе имеют одинаковый цвет. Обратите внимание, что данные разбиты на три кластера с очень небольшим перекрытием.
scatter(labeledX(:,1),labeledX(:,2),[],Y,'filled') title('Labeled Data')

Случайная генерация 300 дополнительных наблюдений немеченых данных с 100 наблюдениями на класс. В целях проверки следует отслеживать истинные метки для немаркированных данных.
unlabeledX = [randn(100,2)*0.25 + ones(100,2);
randn(100,2)*0.25 - ones(100,2);
randn(100,2)*0.5];
trueLabels = [ones(100,1); ones(100,1)*2; ones(100,1)*3];Подгонка меток к немеченым данным с помощью полуинспектируемого метода самоподготовки. Функция fitsemiself возвращает SemiSupervisedSelfTrainingModel объект, чей FittedLabels содержит соответствующие метки для немаркированных данных и LabelScores содержит связанные оценки меток.
Mdl = fitsemiself(labeledX,Y,unlabeledX)
Mdl =
SemiSupervisedSelfTrainingModel with properties:
FittedLabels: [300x1 double]
LabelScores: [300x3 double]
ClassNames: [1 2 3]
ResponseName: 'Y'
CategoricalPredictors: []
Learner: [1x1 classreg.learning.classif.CompactClassificationECOC]
Properties, Methods
Визуализируйте результаты подгонки меток с помощью графика рассеяния. Используйте подогнанные метки для задания цвета наблюдений, а максимальные оценки меток - для задания прозрачности наблюдений. Наблюдения с меньшей прозрачностью маркируются с большей уверенностью. Обратите внимание, что наблюдения, расположенные ближе к границам кластера, помечены с большей неопределенностью.
maxLabelScores = max(Mdl.LabelScores,[],2); rescaledScores = rescale(maxLabelScores,0.05,0.95); scatter(unlabeledX(:,1),unlabeledX(:,2),[],Mdl.FittedLabels,'filled', ... 'MarkerFaceAlpha','flat','AlphaData',rescaledScores); title('Fitted Labels for Unlabeled Data')

Определите точность маркировки, используя истинные метки для немаркированных данных.
numWrongLabels = sum(trueLabels ~= Mdl.FittedLabels)
numWrongLabels = 8
Только 8 из 300 наблюдений в unlabeledX имеют неправильную маркировку.
Использовать как помеченные, так и немаркированные данные для обучения SemiSupervisedSelfTrainingModel объект. Маркировка новых данных с использованием обученной модели.
Случайным образом генерируют 15 наблюдений помеченных данных с 5 наблюдениями в каждом из трех классов.
rng('default') % For reproducibility labeledX = [randn(5,2)*0.25 + ones(5,2); randn(5,2)*0.25 - ones(5,2); randn(5,2)*0.5]; Y = [ones(5,1); ones(5,1)*2; ones(5,1)*3];
Случайная генерация 300 дополнительных наблюдений немеченых данных с 100 наблюдениями на класс.
unlabeledX = [randn(100,2)*0.25 + ones(100,2);
randn(100,2)*0.25 - ones(100,2);
randn(100,2)*0.5];Подгонка меток к немеченым данным с помощью полуинспектируемого метода самоподготовки. Функция fitsemiself возвращает SemiSupervisedSelfTrainingModel объект, чей FittedLabels содержит соответствующие метки для немаркированных данных и LabelScores содержит связанные оценки меток.
Mdl = fitsemiself(labeledX,Y,unlabeledX)
Mdl =
SemiSupervisedSelfTrainingModel with properties:
FittedLabels: [300x1 double]
LabelScores: [300x3 double]
ClassNames: [1 2 3]
ResponseName: 'Y'
CategoricalPredictors: []
Learner: [1x1 classreg.learning.classif.CompactClassificationECOC]
Properties, Methods
Случайная генерация 150 наблюдений новых данных с 50 наблюдениями на класс. В целях проверки следует отслеживать истинные метки для новых данных.
newX = [randn(50,2)*0.25 + ones(50,2);
randn(50,2)*0.25 - ones(50,2);
randn(50,2)*0.5];
trueLabels = [ones(50,1); ones(50,1)*2; ones(50,1)*3];Спрогнозировать метки для новых данных с помощью predict функции SemiSupervisedSelfTrainingModel объект. Сравните истинные метки с прогнозируемыми метками с помощью матрицы путаницы.
predictedLabels = predict(Mdl,newX); confusionchart(trueLabels,predictedLabels)

Только 8 из 150 наблюдений в newX имеют неправильную маркировку.
fitsemigraph | fitsemiself | predict | SemiSupervisedGraphModel
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.