Сгенерированные преобразования функции
FeatureTransformer объект содержит информацию о преобразованиях функции, сгенерированных от обучающего набора данных. Чтобы лучше изучить генерированные признаки, можно использовать describe объектная функция. Чтобы применить тот же набор обучающих данных показывают преобразования к набору тестов, можно использовать transform объектная функция.
Создайте FeatureTransformer объект при помощи gencfeatures функция.
Type — Тип модели'classification'Это свойство доступно только для чтения.
Тип модели в виде 'classification'.
TargetLearner — Ожидаемый тип ученика'linear' | 'bag'Это свойство доступно только для чтения.
Ожидаемый тип ученика в виде 'linear' или 'bag'. Программное обеспечение создает и выбирает новые возможности, принимающие, что они будут использоваться, чтобы обучить линейный классификатор или сложенный в мешок классификатор ансамбля, соответственно.
NumEngineeredFeatures — Количество спроектированных функцийЭто свойство доступно только для чтения.
Количество спроектированных признаков, генерированных gencfeatures и сохраненный в FeatureTransformer, возвращенный как неотрицательный скаляр.
Типы данных: double
NumOriginalFeatures — Количество исходных функцийЭто свойство доступно только для чтения.
Количество исходных функций, сохраненных gencfeatures и сохраненный в FeatureTransformer, возвращенный как неотрицательный скаляр.
Типы данных: double
TotalNumFeatures — Общее количество функцийЭто свойство доступно только для чтения.
Общее количество функций сохранено в FeatureTransformer, возвращенный как неотрицательный скаляр. TotalNumFeatures равняется сумме NumEngineeredFeatures и NumOriginalFeatures.
Типы данных: double
Генерируйте признаки из таблицы данных о предикторе при помощи gencfeatures. Смотрите генерированные признаки при помощи describe объектная функция.
Считайте данные об отключении электроэнергии в рабочую область как таблица. Удалите наблюдения с отсутствующими значениями и отобразите первые несколько строк таблицы.
outages = readtable("outages.csv");
Tbl = rmmissing(outages);
head(Tbl)ans=8×6 table
Region OutageTime Loss Customers RestorationTime Cause
_____________ ________________ ______ __________ ________________ ___________________
{'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 {'winter storm' }
{'SouthEast'} 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 {'winter storm' }
{'West' } 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'}
{'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm' }
{'West' } 2003-06-18 02:49 0 0 2003-06-18 10:54 {'attack' }
{'NorthEast'} 2003-07-16 16:23 239.93 49434 2003-07-17 01:12 {'fire' }
{'MidWest' } 2004-09-27 11:09 286.72 66104 2004-09-27 16:37 {'equipment fault'}
{'SouthEast'} 2004-09-05 17:48 73.387 36073 2004-09-05 20:46 {'equipment fault'}
Некоторые переменные, такие как OutageTime и RestorationTime, имейте типы данных, которые не поддерживаются функциями обучения классификатора как fitcensemble.
Генерируйте 25 признаков от предикторов в Tbl это может использоваться, чтобы обучить уволенный ансамбль. Задайте Region табличная переменная как ответ.
Transformer = gencfeatures(Tbl,"Region",25,"TargetLearner","bag")
Transformer =
FeatureTransformer with properties:
Type: 'classification'
TargetLearner: 'bag'
NumEngineeredFeatures: 22
NumOriginalFeatures: 3
TotalNumFeatures: 25
Transformer объект содержит информацию о генерированных признаках, и преобразования раньше создавали их.
Чтобы лучше изучить генерированные признаки, используйте describe объектная функция.
Info = describe(Transformer)
Info=25×4 table
Type IsOriginal InputVariables Transformations
___________ __________ ___________________________ _________________________________________________________________________________________________________________
Loss Numeric true Loss ""
Customers Numeric true Customers ""
c(Cause) Categorical true Cause "Variable of type categorical converted from a cell data type"
RestorationTime-OutageTime Numeric false OutageTime, RestorationTime "Elapsed time in seconds between OutageTime and RestorationTime"
sdn(OutageTime) Numeric false OutageTime "Serial date number from 01-Feb-2002 12:18:00"
woe3(c(Cause)) Numeric false Cause "Variable of type categorical converted from a cell data type -> Weight of Evidence (positive class = SouthEast)"
doy(OutageTime) Numeric false OutageTime "Day of the year"
year(OutageTime) Numeric false OutageTime "Year"
kmd1 Numeric false Loss, Customers "Euclidean distance to centroid 1 (kmeans clustering with k = 10)"
kmd5 Numeric false Loss, Customers "Euclidean distance to centroid 5 (kmeans clustering with k = 10)"
quarter(OutageTime) Numeric false OutageTime "Quarter of the year"
woe2(c(Cause)) Numeric false Cause "Variable of type categorical converted from a cell data type -> Weight of Evidence (positive class = NorthEast)"
year(RestorationTime) Numeric false RestorationTime "Year"
month(OutageTime) Numeric false OutageTime "Month of the year"
Loss.*Customers Numeric false Loss, Customers "Loss .* Customers"
tods(OutageTime) Numeric false OutageTime "Time of the day in seconds"
⋮
Info таблица показывает следующее:
Первые три генерированных признака являются исходными к Tbl, несмотря на то, что программное обеспечение преобразует исходный Cause переменная к категориальной переменной c(Cause).
OutageTime и RestorationTime переменные не включены как генерированные признаки, потому что они - datetime переменные, которые не могут использоваться, чтобы обучить сложенную в мешок модель ансамбля. Однако программное обеспечение выводит многие генерированные признаки от этих переменных, таких как четвертая функция RestorationTime-OutageTime.
Некоторыми генерированными признаками является комбинация нескольких преобразований. Например, программное обеспечение генерирует шестой признак woe3(c(Cause)) путем преобразования Cause переменная к категориальной переменной и затем вычислению Веса значений Доказательства для получившейся переменной.
Обучите линейный классификатор, использующий только числовые генерированные признаки, возвращенные gencfeatures.
Загрузите patients набор данных. Составьте таблицу от подмножества переменных.
load patients Tbl = table(Age,Diastolic,Height,SelfAssessedHealthStatus, ... Smoker,Systolic,Weight,Gender);
Разделите данные в наборы обучающих данных и наборы тестов. Используйте приблизительно 70% наблюдений как обучающие данные и 30% наблюдений как тестовые данные. Разделите данные с помощью cvpartition.
rng("default") c = cvpartition(Tbl.Gender,"Holdout",0.30); TrainTbl = Tbl(training(c),:); TestTbl = Tbl(test(c),:);
Используйте обучающие данные, чтобы генерировать 25 новых признаков. Задайте метод выбора признаков минимальной уместности максимума сокращения (MRMR) для выбора новых возможностей.
Transformer = gencfeatures(TrainTbl,"Gender",25, ... "FeatureSelectionMethod","mrmr")
Transformer =
FeatureTransformer with properties:
Type: 'classification'
TargetLearner: 'linear'
NumEngineeredFeatures: 24
NumOriginalFeatures: 1
TotalNumFeatures: 25
Смотрите генерированные признаки.
Info = describe(Transformer)
Info=25×4 table
Type IsOriginal InputVariables Transformations
___________ __________ ________________________ __________________________________________________________________________________________
c(SelfAssessedHealthStatus) Categorical true SelfAssessedHealthStatus "Variable of type categorical converted from a cell data type"
eb5(Weight) Categorical false Weight "Equal-width binning (number of bins = 5)"
zsc(sqrt(Systolic)) Numeric false Systolic "sqrt( ) -> Standardization with z-score (mean = 11.086, std = 0.29694)"
zsc(sin(Systolic)) Numeric false Systolic "sin( ) -> Standardization with z-score (mean = -0.1303, std = 0.72575)"
zsc(Systolic./Weight) Numeric false Systolic, Weight "Systolic ./ Weight -> Standardization with z-score (mean = 0.82662, std = 0.14555)"
zsc(Age+Weight) Numeric false Age, Weight "Age + Weight -> Standardization with z-score (mean = 191.1143, std = 28.6976)"
zsc(Age./Weight) Numeric false Age, Weight "Age ./ Weight -> Standardization with z-score (mean = 0.25424, std = 0.062486)"
zsc(Diastolic.*Weight) Numeric false Diastolic, Weight "Diastolic .* Weight -> Standardization with z-score (mean = 12864.6857, std = 2731.1613)"
q6(Height) Categorical false Height "Equiprobable binning (number of bins = 6)"
zsc(Systolic+Weight) Numeric false Systolic, Weight "Systolic + Weight -> Standardization with z-score (mean = 276.1429, std = 28.7111)"
zsc(Diastolic-Weight) Numeric false Diastolic, Weight "Diastolic - Weight -> Standardization with z-score (mean = -69.4286, std = 26.2411)"
zsc(Age-Weight) Numeric false Age, Weight "Age - Weight -> Standardization with z-score (mean = -115.2, std = 27.0113)"
zsc(Height./Weight) Numeric false Height, Weight "Height ./ Weight -> Standardization with z-score (mean = 0.44797, std = 0.067992)"
zsc(Height.*Weight) Numeric false Height, Weight "Height .* Weight -> Standardization with z-score (mean = 10291.0714, std = 2111.9071)"
zsc(Diastolic+Weight) Numeric false Diastolic, Weight "Diastolic + Weight -> Standardization with z-score (mean = 236.8857, std = 29.2439)"
zsc(Age.*Weight) Numeric false Age, Weight "Age .* Weight -> Standardization with z-score (mean = 5836.5571, std = 1621.0685)"
⋮
Преобразуйте наборы обучающих данных и наборы тестов, но сохраните только числовые предикторы.
numericIdx = (Info.Type == "Numeric");
NewTrainTbl = transform(Transformer,TrainTbl,numericIdx);
NewTestTbl = transform(Transformer,TestTbl,numericIdx);Обучите линейную модель с помощью преобразованных обучающих данных. Визуализируйте точность предсказаний набора тестов модели при помощи матрицы беспорядка.
Mdl = fitclinear(NewTrainTbl,TrainTbl.Gender); testLabels = predict(Mdl,NewTestTbl); confusionchart(TestTbl.Gender,testLabels)

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