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