Маркируйте новые данные с помощью полууправляемого самообученного классификатора
Используйте маркированные и немаркированные данные для обучения 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 неправильно маркированы.
Mdl - Полууправляемый классификатор самообученияSemiSupervisedSelfTrainingModel объектПолууправляемый классификатор самообучения, заданный как SemiSupervisedSelfTrainingModel объект, возвращенный fitsemiself.
X - Данные предиктора, которые будут классифицированыДанные предиктора, которые будут классифицированы, заданные как числовая матрица или таблица. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.
Если вы тренировались Mdl использование матричных данных (X и UnlabeledX в вызове на fitsemiself), затем задайте X в виде числовой матрицы.
Переменные в столбцах X должен иметь тот же порядок, что и переменные предиктора, которые обучали Mdl.
Программа обрабатывает предикторы в X индексы которого совпадают с Mdl.CategoricalPredictors как категориальные предикторы.
Если вы тренировались Mdl использование табличных данных (Tbl и UnlabeledTbl в вызове на fitsemiself), затем задайте X как таблица.
Все переменные предиктора в X должны иметь те же имена переменных и типы данных, что и обученные Mdl (хранится в Mdl.PredictorNames). Однако порядок столбцов X не должен соответствовать порядку столбцов Tbl. Кроме того, Tbl и X может содержать дополнительные переменные (для примера, переменные отклика), но predict игнорирует их.
predict не поддерживает многополюсные переменные или массивы ячеек, отличные от массивов ячеек векторов символов.
Типы данных: single | double | table
label - Предсказанные метки классовПредсказанные метки классов, возвращенные как категориальный или символьный массив, логический или числовой вектор или массив ячеек из векторов символов. label имеет тот совпадающий тип данных, что и установленные метки классов Mdl.FittedLabels, и его длина равна количеству строк в X.
score - Предсказанные счета классовПредсказанные счета классов, возвращенные как числовая матрица. score имеет размер m -by - K, где m - количество наблюдений (или строк) в X и K количество классов в Mdl.ClassNames.
score(m,k) вероятность того, что наблюдение m в X принадлежит классу k, где более высокое значение баллов указывает на более высокую вероятность. Область значений значений баллов зависит от базового классификатора Mdl.Learner.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.